投稿‎ > ‎

spring-petclinicサンプルにMySQLを利用する設定変更

posted Jul 28, 2013, 8:30 AM by Zhang Wenxu   [ updated Nov 18, 2013, 1:06 AM ]
petclinicは、Springフレームワークのテスト駆動サンプルアプリケーションである。
詳細は、下記を参照。
http://static.springsource.org/docs/petclinic.html
データベースアクセスのデフォルト設定は、HSQLDBというin-memoryDBである。MySQLを使いたい場合は、下記の修正が必要。
1.data-access.properties

# HSQL Settingsをコメントアウトして、# MySQL Settingsのコメントを外す

2.pom.xml

mysql-connector-javaのdependencyを有効にし、hsqldbをコメントアウトする


修正後のpom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>org.springframework.samples</groupId>

<artifactId>spring-petclinic</artifactId>

<version>1.0.0-SNAPSHOT</version>


<name>petclinic</name>

<packaging>war</packaging>


<properties>


<!-- Generic properties -->

<java.version>1.6</java.version>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>


<!-- Spring -->

<spring-framework.version>3.2.3.RELEASE</spring-framework.version>

<spring-data-jpa.version>1.3.2.RELEASE</spring-data-jpa.version>



<!-- Java EE / Java SE dependencies -->

<jsp.version>2.2</jsp.version>

<jstl.version>1.2</jstl.version>

<servlet.version>2.5</servlet.version>

<jaxb-impl.version>2.2.7</jaxb-impl.version>


<!-- Hibernate / JPA -->

<hibernate.version>4.2.1.Final</hibernate.version>


<!-- Bean validation -->

<hibernate-validator.version>4.3.1.Final</hibernate-validator.version>


<!-- Database access -->

<tomcat-jdbc.version>7.0.41</tomcat-jdbc.version>

<ehcache.version>2.6.6</ehcache.version>

<hsqldb.version>2.2.9</hsqldb.version>


<!-- AOP -->

<aspectj.version>1.7.3</aspectj.version>


<!-- Logging -->

<logback.version>1.0.13</logback.version>

<slf4j.version>1.7.5</slf4j.version>


<!-- RSS -->

<rome.version>1.0</rome.version>


<!-- Test -->

<junit.version>4.11</junit.version>

<hamcrest.version>1.3</hamcrest.version>


<!-- Dates -->

<jodatime-hibernate.version>1.3</jodatime-hibernate.version>

<jodatime-jsptags.version>1.1.1</jodatime-jsptags.version>

<jodatime.version>2.2</jodatime.version>

<jadira-usertype-core.version>3.1.0.CR8</jadira-usertype-core.version>



<!-- Web dependencies -->

<webjars-bootstrap.version>2.3.0</webjars-bootstrap.version>

<webjars-jquery-ui.version>1.9.2</webjars-jquery-ui.version>

<webjars-jquery.version>1.9.0</webjars-jquery.version>

<dandelion.datatables.version>0.8.14</dandelion.datatables.version>


<mysql.version>5.1.22</mysql.version>


</properties>


<dependencies>

<dependency>

<groupId>org.jadira.usertype</groupId>

<artifactId>usertype.core</artifactId>

<version>${jadira-usertype-core.version}</version>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>jstl</artifactId>

<version>${jstl.version}</version>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>servlet-api</artifactId>

<version>${servlet.version}</version>

<scope>provided</scope>

</dependency>

<dependency>

<groupId>javax.servlet.jsp</groupId>

<artifactId>jsp-api</artifactId>

<version>${jsp.version}</version>

<scope>provided</scope>

</dependency>

<dependency>

<groupId>com.sun.xml.bind</groupId>

<artifactId>jaxb-impl</artifactId>

<version>${jaxb-impl.version}</version>

<scope>provided</scope>

</dependency>

<!-- SPRING, SPRING, SPRINGITY SPRING -->

<dependency>

<groupId>org.springframework.data</groupId>

<artifactId>spring-data-jpa</artifactId>

<version>${spring-data-jpa.version}</version>

<exclusions>

<exclusion>

<groupId>org.springframework</groupId>

<artifactId>*</artifactId>

</exclusion>

</exclusions>

</dependency>


<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

<version>${spring-framework.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aop</artifactId>

<version>${spring-framework.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>${spring-framework.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-tx</artifactId>

<version>${spring-framework.version}</version>

</dependency>

<!-- used for EhCacheCacheManager -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context-support</artifactId>

<version>${spring-framework.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-orm</artifactId>

<version>${spring-framework.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-oxm</artifactId>

<version>${spring-framework.version}</version>

<exclusions>

<exclusion>

<groupId>commons-lang</groupId>

<artifactId>commons-lang</artifactId>

</exclusion>

</exclusions>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jms</artifactId>

<version>${spring-framework.version}</version>

</dependency>



<!-- Database connection pool 

See here for more details on commons-dbcp versus tomcat-jdbc

    http://blog.ippon.fr/2013/03/13/improving-the-performance-of-the-spring-petclinic-sample-application-part-3-of-5/

    -->

<dependency>

<groupId>org.apache.tomcat</groupId>

<artifactId>tomcat-jdbc</artifactId>

<version>${tomcat-jdbc.version}</version>

<scope>runtime</scope>

</dependency>


<!-- Logging with SLF4J & LogBack -->

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-api</artifactId>

<version>${slf4j.version}</version>

<scope>compile</scope>

</dependency>

<dependency>

<groupId>ch.qos.logback</groupId>

<artifactId>logback-classic</artifactId>

<version>${logback.version}</version>

<scope>runtime</scope>

</dependency>


<!-- used for Atom -->

<dependency>

<groupId>rome</groupId>

<artifactId>rome</artifactId>

<version>${rome.version}</version>

</dependency>

<!-- Date and Time -->

<dependency>

<groupId>joda-time</groupId>

<artifactId>joda-time</artifactId>

<version>${jodatime.version}</version>

</dependency>

<dependency>

<groupId>joda-time</groupId>

<artifactId>joda-time-hibernate</artifactId>

<version>${jodatime-hibernate.version}</version>

</dependency>

<dependency>

<groupId>joda-time</groupId>

<artifactId>joda-time-jsptags</artifactId>

<version>${jodatime-jsptags.version}</version>

</dependency>


<!-- Databases - Uses HSQL by default -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>${mysql.version}</version>

</dependency> 

<!-- 

<dependency>

<groupId>org.hsqldb</groupId>

<artifactId>hsqldb</artifactId>

<version>${hsqldb.version}</version>

<scope>runtime</scope>

</dependency>

  -->

<!-- For MySql only -->

<!-- <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> -->

<!-- HIBERNATE -->

<dependency>

<groupId>org.hibernate</groupId>

<artifactId>hibernate-entitymanager</artifactId>

<version>${hibernate.version}</version>

</dependency>

<dependency>

<groupId>org.hibernate</groupId>

<artifactId>hibernate-validator</artifactId>

<version>${hibernate-validator.version}</version>

</dependency>

<dependency>

<groupId>org.hibernate</groupId>

<artifactId>hibernate-ehcache</artifactId>

<version>${hibernate.version}</version>

</dependency>

<dependency>

<groupId>net.sf.ehcache</groupId>

<artifactId>ehcache-core</artifactId>

<version>${ehcache.version}</version>

<exclusions>

<exclusion>

<groupId>commons-logging</groupId>

<artifactId>commons-logging</artifactId>

</exclusion>

</exclusions>

</dependency>

<!-- Webjars (static dependencies distributed as JAR files) -->

<dependency>

<groupId>org.webjars</groupId>

<artifactId>bootstrap</artifactId>

<version>${webjars-bootstrap.version}</version>

</dependency>

<dependency>

<groupId>org.webjars</groupId>

<artifactId>jquery-ui</artifactId>

<version>${webjars-jquery-ui.version}</version>

</dependency>

<dependency>

<groupId>org.webjars</groupId>

<artifactId>jquery</artifactId>

<version>${webjars-jquery.version}</version>

</dependency>

<!-- Test Artifacts -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-test</artifactId>

<version>${spring-framework.version}</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>${junit.version}</version>

<scope>test</scope>

</dependency>

<!-- used by Spring MVC Test framework -->

<dependency>

<groupId>org.hamcrest</groupId>

<artifactId>hamcrest-library</artifactId>

<version>${hamcrest.version}</version>

<scope>test</scope>

</dependency>


<dependency>

<groupId>org.aspectj</groupId>

<artifactId>aspectjrt</artifactId>

<version>${aspectj.version}</version>

</dependency>

<dependency>

<groupId>org.aspectj</groupId>

<artifactId>aspectjweaver</artifactId>

<version>${aspectj.version}</version>

<scope>runtime</scope>

</dependency>



<!-- Dandelion -->

<dependency>

<groupId>com.github.dandelion</groupId>

<artifactId>datatables-jsp</artifactId>

<version>${dandelion.datatables.version}</version>

</dependency>

<dependency>

<groupId>com.github.dandelion</groupId>

<artifactId>datatables-export-itext</artifactId>

<version>${dandelion.datatables.version}</version>

</dependency>

<dependency>

<groupId>com.github.dandelion</groupId>

<artifactId>datatables-servlet2</artifactId>

<version>${dandelion.datatables.version}</version>

</dependency>



</dependencies>


<!-- Maven plugin versions are mentioned in order to guarantee the build reproducibility in the long term -->

<build>

<defaultGoal>install</defaultGoal>

<testResources>

  <testResource>

  <!-- declared explicitly so Spring config files can be placed next to their corresponding JUnit test class 

  (see example with ValidatorTests) -->

    <directory>${project.basedir}/src/test/java</directory>

  </testResource>

  <testResource>

    <directory>${project.basedir}/src/test/resources</directory>

  </testResource>

</testResources>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>3.0</version>

<configuration>

<compilerArguments>

<Xlint />

</compilerArguments>

<verbose>true</verbose>

<source>${java.version}</source>

<target>${java.version}</target>

<showWarnings>true</showWarnings>

</configuration>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-surefire-plugin</artifactId>

<version>2.13</version>

<configuration>

<includes>

<include>**/*Tests.java</include>

</includes>

</configuration>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-war-plugin</artifactId>

<version>2.3</version>

<configuration>

<warName>petclinic</warName>

</configuration>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-eclipse-plugin</artifactId>

<version>2.9</version>

<configuration>

<downloadSources>true</downloadSources>

<downloadJavadocs>true</downloadJavadocs>

<wtpversion>2.0</wtpversion>

<sourceIncludes>

<sourceInclude>**/*.*</sourceInclude>

</sourceIncludes>

<additionalBuildcommands>

<buildCommand>

<name>org.springframework.ide.eclipse.core.springbuilder</name>

</buildCommand>

<buildCommand>

<name>org.eclipse.m2e.core.maven2Builder</name>

</buildCommand>

</additionalBuildcommands>

<additionalProjectnatures>

<projectnature>org.eclipse.jdt.core.javanature</projectnature>

<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>

<projectnature>org.eclipse.m2e.core.maven2Nature</projectnature>

</additionalProjectnatures>

</configuration>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-assembly-plugin</artifactId>

<version>2.4</version>

<configuration>

<descriptorRefs>

<descriptorRef>jar-with-dependencies</descriptorRef>

</descriptorRefs>

</configuration>

</plugin>

<plugin>

<groupId>org.apache.tomcat.maven</groupId>

<artifactId>tomcat7-maven-plugin</artifactId>

<version>2.0</version>

<configuration>

<server>tomcat-development-server</server>

<port>9966</port>

<path>/petclinic</path>

</configuration>

</plugin>

</plugins>

</build>


</project>


修正後のdata-access.properties

# Properties file with JDBC and JPA settings.

#

# Applied by <context:property-placeholder location="jdbc.properties"/> from

# various application context XML files (e.g., "applicationContext-*.xml").

# Targeted at system administrators, to avoid touching the context XML files.


#-------------------------------------------------------------------------------

# HSQL Settings


#jdbc.driverClassName=org.hsqldb.jdbcDriver

#jdbc.url=jdbc:hsqldb:mem:petclinic

#jdbc.username=sa

#jdbc.password=


# Properties that control the population of schema and data for a new data source

#jdbc.initLocation=classpath:db/hsqldb/initDB.sql

#jdbc.dataLocation=classpath:db/hsqldb/populateDB.sql


# Property that determines which database to use with an AbstractJpaVendorAdapter

#jpa.database=HSQL


jpa.showSql=true


#-------------------------------------------------------------------------------

# MySQL Settings


jdbc.driverClassName=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/petclinic

jdbc.username=root

jdbc.password=


# Properties that control the population of schema and data for a new data source

jdbc.initLocation=classpath:db/mysql/initDB.sql

jdbc.dataLocation=classpath:db/mysql/populateDB.sql


# Property that determines which Hibernate dialect to use

# (only applied with "applicationContext-hibernate.xml")

#hibernate.dialect=org.hibernate.dialect.MySQLDialect


# Property that determines which database to use with an AbstractJpaVendorAdapter

jpa.database=MYSQL

Google+
By Zhang Wenxu
ċ
data-access.properties
(1k)
Zhang Wenxu,
Jul 28, 2013, 8:30 AM
ċ
pom.xml
(13k)
Zhang Wenxu,
Jul 28, 2013, 8:30 AM
Comments