您的位置:首页 > 数据库

JPA + Hibernate + PostgreSQL + Maven基本配置示例

2014-01-29 20:48 579 查看
JPA + Hibernate + PostgreSQL工程示例。

注意 user 在 postgresql 中为保留关键字,所以如果你persist一个名为User的类的时候就会报语法错误。

创建项目

用JBoss Forge或maven archetype 或 eclipse创建一个maven项目,添加以下依赖:
<dependencies>
<!-- JPA -->
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>

<!-- hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.0.1.Final</version>
</dependency>

<!-- log4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
</dependency>

<!-- JDBC Driver -->
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
</dependency>
</dependencies>

配置persistence.xml

在src/resource下创建META-INF目录,新建一个persistence.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="test" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<!-- standard properties -->
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/jpa-test" />
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
<property name="javax.persistence.jdbc.user" value="postgres" />
<property name="javax.persistence.jdbc.password" value="111111" />

<!-- hibernate-specific properties -->
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>

</properties>
</persistence-unit>
</persistence>


注:
1. 因为程序的运行环境为JavaSE,所以transaction-type应指定为RESOURCE_LOCAL
2. <provider>节点可省略,因为JPA默认的实现就是hibernate。但由于通俗起见最好不要省略。
3. 如果使用postgresql,那 hibernate.dialect 必须设为 org.hibernate.dialect.PostgreSQLDialect。否则程序运行时会报语法错误。
4. 如果hibernate.hbm2ddl.auto的值为update,那么数据库中必须事先存在数据表,否则会报错。

创建User实体bean

User的定义如下:
@Entity
@Table(name = "USER_")
public class User {
@Id @GeneratedValue
private long id;

private String name;
private String password;

// getters and setters ...

}


前面提到User是postgresql的保留字,所以我们使用 USER_ 作为表名,以防冲突。

编写主函数

public static void main(String[] args) {
// obtain factory
EntityManagerFactory emf = Persistence.createEntityManagerFactory("test");
// obtain EntityManager
EntityManager em = emf.createEntityManager();

// start transaction
em.getTransaction().begin();
User u = new User();
u.setName("bruce");
em.persist(u);
em.getTransaction().commit();

}


然后执行主类即可。

撰写此文的目的在于记录一下JPA的基本配置,方便日后查阅。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: