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

JPA + Hibernate + PostgreSQL工程示例。html

注意 user 在 postgresql 中爲保留關鍵字,因此若是你persist一個名爲User的類的時候就會報語法錯誤。java


建立項目

用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的基本配置,方便往後查閱。
相關文章
相關標籤/搜索