、JPA与的整合
01
设置的配置文件
在的配置文件.xml中,配置C3P0数据源、和r等Bean组件。以下是.xml文件的源程序。
/ .xml /
< = …>
< :-
= ":jdbc."/>
< = ""
class= "com..v2.c3p0.e">
< = ""value= "${jdbc.url}"/>
< = ""value= "${jdbc..class}"/>
< = "user"value= "${jdbc.}"/>
< = ""value= "${jdbc.}"/>
< = ""
class= "org..orm.jpa
." >
< = ""ref= ""/>
< = "">
< = "org..orm.jpa.
.apter" >
< = ""value= "MYSQL"/>
< = ""value= "true"/>
< = "">
< list>
< value>
< = ""
class= "org..orm.jpa.r">
< = ""
ref= ""/>
< = ""class= "."/>
< = ""class= "."/>
< tx:--= ""/>
< :--= ""/>
.xml配置文件的元素设定属性文件为根路径下的jdbc.文件。C3P0数据源会从该属性文件获取连接数据库的信息。以下是jdbc.文件的源代码。
/ jdbc. /
jdbc.=root
jdbc.= 1234
jdbc..class= com.mysql.jdbc.
jdbc.url=jdbc:mysq l:// t:3306/?=false
的.xml配置文件在配置 Bean组件时,指定使用apter适配器精通hibernate:java对象持久化技术详解 Java技术详解 │ Spring、JPA与Hibernate的整合,该适配器能够把集成到中。
属性指定实体类所在的包,会扫描这些包中实体类中的对象-关系映射注解。
.xml配置文件的元素表明在程序中可以通过@注解来为委托为一个方法声明事务边界。
02
编写范例的Java类
本范例运用了框架,把业务逻辑层又细分为业务逻辑服务层、数据访问层和模型层。
在上图中,模型层包含了表示业务数据的实体类,数据访问层负责访问数据库,业务逻辑服务层负责处理各种业务逻辑精通hibernate:java对象持久化技术详解,并且通过数据访问层提供的方法来完成对数据库的各种操作。类、类和类都会用到 API中的类或者注解。其余的类和接口则不依赖 API。
1
●
编写实体类
类是普通的实体类,它不依赖Sping API,但是会通过JPA API和 API中的注解来设置对象-关系映射。以下是类的源代码。
/ .java /
@
@Table(name= "")
class java.io. {
@Id
@(= "")
@(name= "", = "")
@(name= "ID")
Long id;
@(name= "NAME")
name;
@(name= "AGE")
int age;
//此处省略类的构造方法、set方法和get方法
…
}
2
●
编写数据访问接口和类
为DAO(Data ,数据访问对象)接口,提供了与对象有关的访问数据库的各种方法。以下是接口的源代码。
/ .java /
{
omer( ) ;
omer( ) ;
omer( ) ;
( Long ) ;
( name);
}
类实现了接口,通过 API和JPA API来访问数据库。以下是类的源代码。
/ .java /
;
...;
..;
..;
.util.List;
@( "")
{
@(name= "")
;
omer( ){
.();
}
omer( ){
.merge();
}
omer( ){
c = (.getId);
.(c);
}
(Long ){
.find(.class, );
}
( name){
.( "from c where c.name = :name",
.class)
.( "name", name)
.;
}
}
在类中使用了以下来自 API的两个注解。
(1) @注解:表明是DAO类,在的.xml文件中通过元素配置了这个Bean组件,会负责创建该Bean组件,并管理它的生命周期,如:
""class= "."/>
(2)@注解:表明类的属性由来提供,会负责创建并管理对象的生命周期。会根据@(name="")注解中设置的对象来创建对象,而对象作为Bean组件精通hibernate:java对象持久化技术详解,在.xml文件中也通过元素做了配置,对象的生命周期也由来管理。
从类的源代码可以看出,这个类无须管理和对象的生命周期,只需用 API的@和@注解来标识, 就会自动管理这两个对象的生命周期。
在.xml配置文件中 ,元素指定所扫描的包,会扫描指定的包以及子包中的所有类中的注解,提供和注解对应的功能。
3
●
编写业务逻辑服务
接口和类
接口作为业务逻辑服务接口,会包含一些处理业务逻辑的操作。本范例做了简化,接口负责保存、更新、删除和检索对象,以下是它的源代码。
/ .java /
{
omer( ) ;
omer( ) ;
( Long ) ;
omer( ) ;
( name) ;
}
类实现了接口,通过组件来访问数据库,以下是它的源代码。
/ .java /
;
..beans...;
...;
....;
.util.List;
@ (" ")
class {
@
;
@
void ( ){
.( );
}
@
void ( ){
.( );
}
@
(Long ){
.( );
}
@
void ( ){
.( );
}
@
List ( name){
.( name);
}
}
在类中使用了以下来自 API的三个注解。
(1)@注解:表明类是服务类。在的.xml文件中通过元素配置了这个Bean组件,会负责创建该Bean组件,并管理它的生命周期,如:
""class= "."/>
(2)@注解:表明属性由来提供。
(3)@注解:表明被注解的方法是事务型的方法。将该方法中的所有操作加入到事务中。
从类的源代码可以看出,类虽然依赖组件,但是无须创建和管理它的生命周期,而且类也无须显式声明事务边界。这些都由代劳了。
4
●
编写测试类
类是测试程序,它会初始化框架,并访问组件,以下是它的源代码。
/ .java /
;
..beans...;
..test..;
...;
...
.;
.util.List;
{
ntext ctx = null;
ce = null;
{
ctx = ( ".xml");
= ctx.(.class);
}
{
= ( "Tom", 25);
.();
.( 36);
.();
c=.(.getId);
.out.(c.+ ": "+c.+ "岁");
List =
.(c.);
for( cc:)
.out.(cc.+ ": "+cc.+ "岁");
.();
}
( args[]) {
.test;
}
}
在类的构造方法中,首先根据.xml配置文件的内容,来初始化框架,并且创建了一个对象,再调用这个对象的(.class)方法,就能获得组件。
03
源代码下载
“代码” 即可获得完整源代码。
04
参考书籍
《精通JPA与:Java对象持久化技术详解-微课视频版》
孙卫琴 编著
定价:168元
京东优惠购书
05