Posted on 2009-04-08 08:49
landor 閱讀(1137)
評(píng)論(0) 編輯 收藏 所屬分類:
jpa
jpa簡(jiǎn)化了持久化的開發(fā),目前的開源實(shí)現(xiàn)是hibernate,商業(yè)的是toplink(也已經(jīng)開源了),其中
toplink是jpa的標(biāo)準(zhǔn)實(shí)現(xiàn),所以netbean默認(rèn)支持的是toplink,下面說一下如何用netbean6.1來生成hibernate實(shí)現(xiàn)
的jpa
1 數(shù)據(jù)庫(kù)采用的是sqlserver2000,補(bǔ)丁sp4,數(shù)據(jù)庫(kù)名叫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
2 創(chuàng)建一個(gè)Java Application 名字叫JavaApplication2,主類默認(rèn)為Main.java
3 添加相應(yīng)的hibernate包到系統(tǒng),右鍵library,Add Library,選擇hibernate,點(diǎn)擊Add
Library(如果hibernate庫(kù)不存在,則可以安裝進(jìn)來,Tools--Plugin,選擇hibernate3.2.5,點(diǎn)擊
Install);還要把hibernate-entitymanager-3.3.2.GA下的hibernate-
entitymanager.jar,以及l(fā)ib下的那三個(gè)ejb3-persistence.jar、hibernate-
annotations.jar、hibernate-commons-annotations.jar加進(jìn)來;注意還要把hibernate-
3.2\lib\javassist.jar包也加進(jìn)來,驅(qū)動(dòng)包要加進(jìn)來jtds-1.2.jar
4 右鍵項(xiàng)目名稱--New--Entity Class from Database,對(duì)話框中Database Connection中選擇數(shù)據(jù)庫(kù)的鏈接,如果沒有就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 點(diǎn)擊Create Persistence Unit來創(chuàng)建持久化單元,在彈出對(duì)話框的Persistence Library
中選擇hibernate,表生成策略中選擇None(其中Create表示當(dāng)系統(tǒng)重新運(yùn)行的時(shí)候,會(huì)根據(jù)實(shí)體創(chuàng)建或者更新數(shù)據(jù)庫(kù)表;Drop and
Create表示刪除再創(chuàng)建表)
8
點(diǎn)擊finish,生成了User實(shí)體類和在META-INF目錄下生成了persistence.xml,通常生成的entity會(huì)把數(shù)據(jù)庫(kù)主鍵自動(dòng)生
成策略也生成出來,但是我這里沒有生成出來,所以還需手工編輯一下,打開User類,在id屬性上增加
@GeneratedValue(strategy=GenerationType.AUTO)注釋,表示采用數(shù)據(jù)庫(kù)生成主鍵的規(guī)則,即


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


9 在Main里面測(cè)試jpa,打開Main類,在代碼編輯區(qū)右鍵--persistence--User Entity Manager,netbean會(huì)自動(dòng)生成persist函數(shù),然后修改Main函數(shù),代碼如下:
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();
}
}
}
運(yùn)行程序,到數(shù)據(jù)庫(kù)中查看是否插入成功;完畢!