`

Hibernate中注解的开发

 
阅读更多

在利用注解开发数据库持久层以前,需要学习一个规范JPA(Java Persistence API),这也是SUN公司提出的数据库的持久化规范。就类似于JDBC,Servlet,JSP等规范一样。而hibernate框架就实现了此规范,我们可以通过注解和配置文件来实现此规范。前边的学习都是建立在配置文件的基础上,而注解开发现在也处于一种趋势,毕竟它大大提高了开发速度。

 

        看一下注解在Hibernate框架中的开发知识。

 

        一,首先需要导入支持注解开发的jar包:

hibernate-annotations.jar

hibernate-commons-annotations.jar (Hibernate中支持注解开发的jar包)

 

ejb3-persistence.jar(API规范的jar包)

 

slf4j/slf4j-api-1.5.0.jar

slf4j-log4j12-1.5.0.jar

log4j-1.2.15.jar  (支持日志输出的jar包,注意版本的匹配)

 

        二,在Hibernate框架进行注解开发时,主要是代替实体和数据表的映射文件,而核心配置文件中的,数据库的连接等等,还是需要xml配置文件,进行配置的。先看一下Hibernate中常用的注解:

 

           1,@Entity : 表示当前的类为实体类,声明在类的前面。可以将当前类和数据库的表和字段进行关联映射。

 

           2,@Table:表示映射的表,声明在类的前面

 

           3,@Id:表示主键的映射,声明在主键的get方法前边,默认情况下主键利用assigned(用户提供)生成策略。如果想要设置API规范提供了四种主键生成策略:

@GeneratedValue(strategy=GenerationType.AUTO)      相当于Hibernate框架的native主键生成策略

@GeneratedValue(strategy=GenerationType.IDENTITY)  相当于Hibernate框架的identity主键生成策略,适用于MySQL,SQL Server

@GeneratedValue(strategy=GenerationType.SEQUENCE)  相当于Hibernate框架的sequence主键生成策略,适用于Oracle,DB2

@GeneratedValue(strategy=GenerationType.TABLE)     使用一张单表管理主键值。

         默认情况下API规范是不支持Hibernate框架中的uuid的主键生成策略,假如我们想要使用,需要我们进行增加主键生成器,如下:

@GenericGenerator(name="hibernate-uuid",strategy="uuid")

@GeneratedValue(generator="hibernate-uuid")

 

           4,@Column : 表示映射属性,和表的字段进行关联

 

           5,@ManyToOne : 表示映射关系中的多对一

 

           6,@JoinColumn : 表示外键映射属性,和表的外键字段进行关联

 

           7,@OneToMany : 表示映射关系中的一对多,这里需要注意,一对多时,外键的维护需要翻转交给多的一方进行维护,需要配置反转属性mappedBy,属性取值为多的一方的映射属性名称。相当于xml配置文件中的Inverse="true"。

 

           8,@OrderBy : 表示排序字段

 

           9,@Transient : 表示声明瞬时属性,不和数据库的字段发生关联,也就是没有表中列与之映射。

 

         等等吧,其实我感觉这些属性和xml配置文件属性都是一一对应的,及时不一样,也会有与之类似的属性进行实现其功能,所以我们可以对比着使用。当然这里只是一些常用的,当我们需要时还需要我们查看文档进行编写。

        

          三,看一个简单的利用主键开发的实体类吧,这里就不需要我们再编写配置文件了:

 

[java] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <span style="font-size:18px;">@Entity  
  2. @Table(name="t_org")  
  3. public class Org {  
  4.   
  5.     private String id;  
  6.     private String name;  
  7.     private String code;  
  8.     private String manager;  
  9.     private String remark;  
  10.     private String createtime;  
  11.     private String updatetime;  
  12.       
  13.     private OrgType orgType;  
  14.       
  15.     private String pid;  
  16.       
  17.     @Transient  
  18.     public String getPid() {  
  19.         return pid;  
  20.     }  
  21.   
  22.     public void setPid(String pid) {  
  23.         this.pid = pid;  
  24.     }  
  25.   
  26.     private Org parentOrg;  
  27.       
  28.     private Set<Org> childOrgSet ;  
  29.   
  30.     @Id  
  31.     @GenericGenerator(name="hibernate-uuid", strategy="uuid")  
  32.     @GeneratedValue(generator="hibernate-uuid")  
  33.     public String getId() {  
  34.         return id;  
  35.     }  
  36.   
  37.     public void setId(String id) {  
  38.         this.id = id;  
  39.     }  
  40.   
  41.     public String getName() {  
  42.         return name;  
  43.     }  
  44.   
  45.     public void setName(String name) {  
  46.         this.name = name;  
  47.     }  
  48.   
  49.     public String getCode() {  
  50.         return code;  
  51.     }  
  52.   
  53.     public void setCode(String code) {  
  54.         this.code = code;  
  55.     }  
  56.   
  57.     public String getManager() {  
  58.         return manager;  
  59.     }  
  60.   
  61.     public void setManager(String manager) {  
  62.         this.manager = manager;  
  63.     }  
  64.   
  65.     public String getRemark() {  
  66.         return remark;  
  67.     }  
  68.   
  69.     public void setRemark(String remark) {  
  70.         this.remark = remark;  
  71.     }  
  72.   
  73.     @Column(updatable=false)  
  74.     public String getCreatetime() {  
  75.         return createtime;  
  76.     }  
  77.   
  78.     public void setCreatetime(String createtime) {  
  79.         this.createtime = createtime;  
  80.     }  
  81.   
  82.     @Column(insertable=false)  
  83.     public String getUpdatetime() {  
  84.         return updatetime;  
  85.     }  
  86.   
  87.     public void setUpdatetime(String updatetime) {  
  88.         this.updatetime = updatetime;  
  89.     }  
  90.   
  91.     @ManyToOne  
  92.     @JoinColumn(name="orgTypeId")  
  93.     public OrgType getOrgType() {  
  94.         return orgType;  
  95.     }  
  96.   
  97.     public void setOrgType(OrgType orgType) {  
  98.         this.orgType = orgType;  
  99.     }  
  100.   
  101.     @ManyToOne  
  102.     @JoinColumn(name="pid", updatable=false)  
  103.     public Org getParentOrg() {  
  104.         return parentOrg;  
  105.     }  
  106.   
  107.     public void setParentOrg(Org parentOrg) {  
  108.         this.parentOrg = parentOrg;  
  109.     }  
  110.   
  111.     @OneToMany(mappedBy="parentOrg")  
  112.     @JoinColumn(name="pid")  
  113.     @OrderBy("code")  
  114.     public Set<Org> getChildOrgSet() {  
  115.         return childOrgSet;  
  116.     }  
  117.   
  118.     public void setChildOrgSet(Set<Org> childOrgSet) {  
  119.         this.childOrgSet = childOrgSet;  
  120.     }  
  121. }  
  122. </span>  


 

         四,当然用了注解的开发方式,我们的核心配置文件就需要我修改了,这里就需要Hibernate的AnnotationSessionFactoryBean工厂类了,

[html] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <span style="font-size:18px;"> <!-- Hibernate核心对象 -->  
  2.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
  3.           <!--省略……-->  
  4.          <!--指定进行了Hibernate注解开发的包,方便框架进行扫描设置-->  
  5.          <property name="packagesToScan">  
  6.             <list>  
  7.                 <value>com/ljh/ppp/domain</value>  
  8.             </list>  
  9.         </property>  
  10. </span>  

 


       这样Hibernate框架的注解开发基本上就算完毕了,总体感觉是比较高效的。我们没写一个类一个方法,顺便将注解编写了,这样我们就不用专门用来编写映射文件了。掌握好注解的开发,在很多时候可以大大提高我们的效率。

分享到:
评论

相关推荐

    spring mvc + spring + hibernate 全注解整合开发视频教程 06.haozip03

    spring mvc + spring + hibernate 全注解整合开发视频教程 06.haozip03

    SSH2 annotation 实现struts2.1.6 spring2.5.6 hibernate3.3 全注解开发

    在这个特定的项目中,开发者选择了SSH2的特定版本:Struts2.1.6、Spring2.5.6和Hibernate3.3,并且强调了全注解开发,这意味着在配置文件中尽可能地使用注解来代替XML配置。 首先,让我们详细了解一下这三个框架的...

    spring mvc + spring + hibernate 全注解整合开发视频教程 04

    在本视频教程“Spring MVC + Spring + Hibernate 全注解整合开发视频教程 04”中,我们将深入探讨Java企业级开发中的三大核心技术——Spring、Spring MVC和Hibernate的集成与应用,尤其是通过注解实现的简化配置。...

    hibernate注解所需包

    使用hibernate注解,必须要使用库hibernate-commons-annotations,hibernate-core,hibernate-jpa,ejb3-persistence,javassist等

    基于spring+springmvc+hibernate的全注解开发

    在全注解开发中,我们不再需要编写大量的Hibernate配置文件,而是通过在实体类上使用`@Entity`声明为数据库表,`@Table`定义表名,`@Id`标识主键,`@GeneratedValue`处理主键生成策略。对于字段,`@Column`注解用于...

    spring mvc + spring + hibernate 全注解整合开发视频教程 12

    在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第12部分,将帮助开发者掌握如何在Java Web项目中高效地集成这三个核心框架,实现松耦合、可...

    struts2.0 spring2.5 hibernate3.2 注解最新框架

    开发者可能会在该文件中找到一个简单的Struts2 Action,一个带有注解的Spring Bean,以及一个用Hibernate注解配置的实体类。通过分析和运行这个`test`文件,可以更好地理解三大框架如何协同工作,以及注解如何简化...

    Hibernate 3 注解技术讲解

    总之,Hibernate 3的注解技术是现代Java应用开发中的一个重要组成部分,它提高了开发效率,简化了数据库操作。通过学习和掌握这些注解,开发者能够更好地利用Hibernate实现ORM,从而专注于业务逻辑,而非繁琐的数据...

    hibernate注解开发所需的jar包

    hibernate注解开发所需的jar包 包括 ejb3-persistance.jar、hibernate-commons-annotations.jar、hibernate-annotations.jar

    spring mvc + spring + hibernate 全注解整合开发视频教程 06.haozip02

    spring mvc + spring + hibernate 全注解整合开发视频教程 06.haozip02

    hibernate+spring+springmvc框架 @注解开发 详细配置注释/及hibernate的HQL/QBC/SQL查询代码使用及注释

    于是我花了几天时间搭建出来的hibernate+springmvc的框架,这个框架去除hibernate配置, 将配置全部整合到spring中,开发中使用注解开发即可,很方便,以后我还会持续更新的。 这是一个maven项目,放在eclipse中,改...

    Hibernate 注解说明文档

    **Hibernate 注解说明文档** ...阅读《Hibernate注解API.pdf》和相关HTML文档,能更深入地了解每个注解的具体用法和场景,提高开发效率。理解并熟练掌握这些注解,将有助于提升Java持久层编程的能力。

    spring mvc + spring + hibernate 全注解整合开发视频教程 03

    在本视频教程“Spring MVC + Spring + Hibernate 全注解整合开发 03”中,我们将深入探讨Java企业级开发中的三大核心框架——Spring、Spring MVC和Hibernate的整合应用,尤其是利用注解进行的无XML配置。以下是这些...

    struts hibernate spring 全注解开发框架

    Struts、Hibernate和Spring是Java开发中的三大框架,它们各自承担着不同的职责并协同工作,以提高开发效率和代码质量。在本项目中,我们使用的是Struts2.1.6、Spring2.5.6和Hibernate3.3的老版本,尽管这些版本相对...

    spring mvc + spring + hibernate 全注解整合开发视频教程 14.haozip01

    spring mvc + spring + hibernate 全注解整合开发视频教程 14.haozip01

    hibernate 中文注解

    文档旨在帮助中文用户更好地理解Hibernate注解的使用方法,虽然翻译版本可能存在与原版文档的一些细微差异,但整体上保持了一致性和准确性。 - **版权声明:** 该文档为非官方翻译版本,用于学习目的。对于翻译中的...

    Hibernate全部注解

    本文档将详细介绍 Hibernate 中的注解使用方法,这些注解主要用于配置对象与数据库之间的映射关系。 #### 二、核心注解介绍 ##### 1. @Entity - **作用**:标记一个类为实体类,表示它可以被持久化到数据库中。 - ...

    hibernate+spring注解例子

    在IT领域,尤其是在Java开发中,`Hibernate`和`Spring`是两个非常关键的框架,它们极大地简化了数据持久化和应用管理。本教程将详细阐述`Hibernate`注解和`Spring`注解的使用,以及如何在一个登录示例中结合它们。 ...

    springmvc+hibernate注解框架整合 demo

    Spring MVC 和 Hibernate 是两个在 Java 开发中广泛使用的开源框架,Spring MVC 用于构建Web应用程序的模型-视图-控制器(MVC)架构,而Hibernate则是一个对象关系映射(ORM)工具,它简化了数据库操作。这个...

    jpa/hibernate继承注解

    在Java Persistence API (JPA) 和 Hibernate ORM 框架中,继承注解是用于处理对象关系映射(ORM)中的类继承结构的关键概念。这些注解帮助开发者将数据库表的设计与面向对象的代码结构相匹配,使得在复杂的业务场景...

Global site tag (gtag.js) - Google Analytics