风也温柔

计算机科学知识库

精通hibernate:java对象持久化技术详解 Java技术详解 │ Spring、JPA与Hibernate的整合

  、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

  文章来源:https://www.sohu.com/a/467439921_453160