用netbean6 通過數據庫生成 entity,jpa采用hibernate實現
Posted on 2009-04-08 08:49 landor 閱讀(1142) 評論(0) 編輯 收藏 所屬分類: jpajpa簡化了持久化的開發,目前的開源實現是hibernate,商業的是toplink(也已經開源了),其中
toplink是jpa的標準實現,所以netbean默認支持的是toplink,下面說一下如何用netbean6.1來生成hibernate實現
的jpa
1 數據庫采用的是sqlserver2000,補丁sp4,數據庫名叫test4,表名叫Users
2 創建一個Java Application 名字叫JavaApplication2,主類默認為Main.java
3 添加相應的hibernate包到系統,右鍵library,Add Library,選擇hibernate,點擊Add Library(如果hibernate庫不存在,則可以安裝進來,Tools--Plugin,選擇hibernate3.2.5,點擊 Install);還要把hibernate-entitymanager-3.3.2.GA下的hibernate- entitymanager.jar,以及lib下的那三個ejb3-persistence.jar、hibernate- annotations.jar、hibernate-commons-annotations.jar加進來;注意還要把hibernate- 3.2\lib\javassist.jar包也加進來,驅動包要加進來jtds-1.2.jar
4 右鍵項目名稱--New--Entity Class from Database,對話框中Database Connection中選擇數據庫的鏈接,如果沒有就new Database Connection,我的配置如下:
name: jtds12
Driver Class: net.sourceforge.jtds.jdbc.Driver
Driver File(s): jtds-1.2.jar
Database URL: jdbc:jtds:sqlserver://locahost:1433/test4
User Name: sa
Password: 123456
5 連接成功之后,如下圖所示
6 選擇Users表后,next,把Users的Class Name改成User,如果想生成@NamedQueries,則選中下面的Generate Named Query Annotations for ...
7 點擊Create Persistence Unit來創建持久化單元,在彈出對話框的Persistence Library 中選擇hibernate,表生成策略中選擇None(其中Create表示當系統重新運行的時候,會根據實體創建或者更新數據庫表;Drop and Create表示刪除再創建表)
8 點擊finish,生成了User實體類和在META-INF目錄下生成了persistence.xml,通常生成的entity會把數據庫主鍵自動生 成策略也生成出來,但是我這里沒有生成出來,所以還需手工編輯一下,打開User類,在id屬性上增加 @GeneratedValue(strategy=GenerationType.AUTO)注釋,表示采用數據庫生成主鍵的規則,即


@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;

9 在Main里面測試jpa,打開Main類,在代碼編輯區右鍵--persistence--User Entity Manager,netbean會自動生成persist函數,然后修改Main函數,代碼如下:
運行程序,到數據庫中查看是否插入成功;完畢!
1 數據庫采用的是sqlserver2000,補丁sp4,數據庫名叫test4,表名叫Users
use test4
go
CREATE TABLE [Users] (
[username] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[password] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[id] [int] IDENTITY (1, 1) NOT NULL ,
CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
) ON [PRIMARY]
GO
go
CREATE TABLE [Users] (
[username] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[password] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[id] [int] IDENTITY (1, 1) NOT NULL ,
CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
) ON [PRIMARY]
GO
2 創建一個Java Application 名字叫JavaApplication2,主類默認為Main.java
3 添加相應的hibernate包到系統,右鍵library,Add Library,選擇hibernate,點擊Add Library(如果hibernate庫不存在,則可以安裝進來,Tools--Plugin,選擇hibernate3.2.5,點擊 Install);還要把hibernate-entitymanager-3.3.2.GA下的hibernate- entitymanager.jar,以及lib下的那三個ejb3-persistence.jar、hibernate- annotations.jar、hibernate-commons-annotations.jar加進來;注意還要把hibernate- 3.2\lib\javassist.jar包也加進來,驅動包要加進來jtds-1.2.jar
4 右鍵項目名稱--New--Entity Class from Database,對話框中Database Connection中選擇數據庫的鏈接,如果沒有就new Database Connection,我的配置如下:
name: jtds12
Driver Class: net.sourceforge.jtds.jdbc.Driver
Driver File(s): jtds-1.2.jar
Database URL: jdbc:jtds:sqlserver://locahost:1433/test4
User Name: sa
Password: 123456
5 連接成功之后,如下圖所示

6 選擇Users表后,next,把Users的Class Name改成User,如果想生成@NamedQueries,則選中下面的Generate Named Query Annotations for ...
7 點擊Create Persistence Unit來創建持久化單元,在彈出對話框的Persistence Library 中選擇hibernate,表生成策略中選擇None(其中Create表示當系統重新運行的時候,會根據實體創建或者更新數據庫表;Drop and Create表示刪除再創建表)
8 點擊finish,生成了User實體類和在META-INF目錄下生成了persistence.xml,通常生成的entity會把數據庫主鍵自動生 成策略也生成出來,但是我這里沒有生成出來,所以還需手工編輯一下,打開User類,在id屬性上增加 @GeneratedValue(strategy=GenerationType.AUTO)注釋,表示采用數據庫生成主鍵的規則,即


@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;


9 在Main里面測試jpa,打開Main類,在代碼編輯區右鍵--persistence--User Entity Manager,netbean會自動生成persist函數,然后修改Main函數,代碼如下:
package javaapplication2;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Main m = new Main();
User user = new User();
user.setName("haha");
user.setUsername("aaaaaaaa");
m.persist(user);
}
public void persist(Object object) {
EntityManagerFactory emf = javax.persistence.Persistence.createEntityManagerFactory("JavaApplication2PU");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
try {
em.persist(object);
em.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
em.getTransaction().rollback();
} finally {
em.close();
}
}
}
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Main m = new Main();
User user = new User();
user.setName("haha");
user.setUsername("aaaaaaaa");
m.persist(user);
}
public void persist(Object object) {
EntityManagerFactory emf = javax.persistence.Persistence.createEntityManagerFactory("JavaApplication2PU");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
try {
em.persist(object);
em.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
em.getTransaction().rollback();
} finally {
em.close();
}
}
}
運行程序,到數據庫中查看是否插入成功;完畢!