1.pom.xml
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.jin.jpa</groupId> <artifactId>jpamaven</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>jpamaven</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.hibernate.version>4.1.7.Final</project.hibernate.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${project.hibernate.version}</version> </dependency> <!-- connection pooling with c3p0 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-c3p0</artifactId> <version>${project.hibernate.version}</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!-- Mysql and MariaDB --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.21</version> </dependency> </dependencies> </project>
2.在src/main/resources目录下包含两个文件
2.1 src/main/resources/META-INF/persistence.xml
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.jin.jpa</groupId> <artifactId>jpamaven</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>jpamaven</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.hibernate.version>4.1.7.Final</project.hibernate.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${project.hibernate.version}</version> </dependency> <!-- connection pooling with c3p0 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-c3p0</artifactId> <version>${project.hibernate.version}</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!-- Mysql and MariaDB --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.21</version> </dependency> </dependencies> </project>
2.2 src/main/resources/log4j.xml
<?xml version="1.0" encoding="UTF-8" ?> <!-- /* * Copyright (C) 2012 Daniel Medina <http://danielme.com> * * This file is part of "MavenJpaHibernateLog4jDemo". * * "MavenJpaHibernateLog4jDemo" is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 3. * * "MavenJpaHibernateLog4jDemo" is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License version 3 * along with this program. If not, see <http://www.gnu.org/licenses/gpl-3.0.html/> */ --> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <!-- http://wiki.apache.org/logging-log4j/Log4jXmlFormat --> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <param name="Target" value="System.out" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n" /> </layout> </appender> <appender name="file" class="org.apache.log4j.RollingFileAppender"> <param name="file" value="logs/logger.log" /> <param name="MaxFileSize" value="5MB" /> <param name="MaxBackupIndex" value="10" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{MM-dd-yyyy hh:mm:ss,SSS a} %5p %c{1}:%L - %m%n" /> </layout> </appender> <root> <priority value="debug" /> <appender-ref ref="console" /> <appender-ref ref="file" /> </root> </log4j:configuration>
3.写一个bean来测试这个环境
src/main/java/com/jin/beans/Person.java

1 package com.jin.beans; 2 3 import javax.persistence.Entity; 4 import javax.persistence.GeneratedValue; 5 import javax.persistence.Id; 6 7 @Entity 8 public class Person { 9 10 @Id @GeneratedValue 11 private Integer id; 12 private String name; 13 public Integer getId() { 14 return id; 15 } 16 public void setId(Integer id) { 17 this.id = id; 18 } 19 public String getName() { 20 return name; 21 } 22 public void setName(String name) { 23 this.name = name; 24 } 25 public Person(String name) { 26 super(); 27 this.name = name; 28 } 29 public Person() { 30 super(); 31 // TODO Auto-generated constructor stub 32 } 33 @Override 34 public String toString() { 35 return "Person [id=" + id + ", name=" + name + "]"; 36 } 37 38 }
4.测试
src/test/java/com/jin/jpa/PersonTest.java

1 public class PersonTest { 2 3 @Test 4 public void save() { 5 EntityManagerFactory factory = Persistence.createEntityManagerFactory("persistence-unit_demo"); 6 EntityManager manager = factory.createEntityManager(); 7 manager.getTransaction().begin(); 8 manager.persist(new Person("小天天")); 9 manager.getTransaction().commit(); 10 manager.close(); 11 factory.close(); 12 } 13 14 }
代码结构图: