jpa简化了持久化的开发,目前的开源实现是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();
}
}
}
运行程序,到数据库中查看是否插入成功;完毕!