`
collegeyuan
  • 浏览: 31519 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

基于注解的hibernate Bean开发步骤

 
阅读更多
在利用注解开发数据库持久层以前,需要学习一个规范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"。
        
            例如:
             @OneToMany(targetEntity = FundAllocationImpl.class, cascade = CascadeType.ALL, mappedBy = "policy")
     @Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
     @JoinColumn(name = "policyId")
     private Set<FundAllocation> allocations = new HashSet<FundAllocation>();
    
              @ManyToOne(targetEntity = InsurancePolicyImpl.class, fetch = FetchType.LAZY)
      @JoinColumn(name = "policyId")
      private InsurancePolicy policy;
           8,@OrderBy : 表示排序字段

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

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

          三,看一个简单的利用主键开发的实体类吧,这里就不需要我们再编写配置文件了:
@Entity 
@Table(name="t_org") 
public class Org { 
 
    private String id; 
    private String name; 
    private String code; 
    private String manager; 
    private String remark; 
    private String createtime; 
    private String updatetime; 
     
    private OrgType orgType; 
     
    private String pid; 
     
    @Transient 
    public String getPid() { 
        return pid; 
    } 
 
    public void setPid(String pid) { 
        this.pid = pid; 
    } 
 
    private Org parentOrg; 
     
    private Set<Org> childOrgSet ; 
 
    @Id 
    @GenericGenerator(name="hibernate-uuid", strategy="uuid") 
    @GeneratedValue(generator="hibernate-uuid") 
    public String getId() { 
        return id; 
    } 
 
    public void setId(String id) { 
        this.id = id; 
    } 
 
    public String getName() { 
        return name; 
    } 
 
    public void setName(String name) { 
        this.name = name; 
    } 
 
    public String getCode() { 
        return code; 
    } 
 
    public void setCode(String code) { 
        this.code = code; 
    } 
 
    public String getManager() { 
        return manager; 
    } 
 
    public void setManager(String manager) { 
        this.manager = manager; 
    } 
 
    public String getRemark() { 
        return remark; 
    } 
 
    public void setRemark(String remark) { 
        this.remark = remark; 
    } 
 
    @Column(updatable=false) 
    public String getCreatetime() { 
        return createtime; 
    } 
 
    public void setCreatetime(String createtime) { 
        this.createtime = createtime; 
    } 
 
    @Column(insertable=false) 
    public String getUpdatetime() { 
        return updatetime; 
    } 
 
    public void setUpdatetime(String updatetime) { 
        this.updatetime = updatetime; 
    } 
 
    @ManyToOne 
    @JoinColumn(name="orgTypeId") 
    public OrgType getOrgType() { 
        return orgType; 
    } 
 
    public void setOrgType(OrgType orgType) { 
        this.orgType = orgType; 
    } 
 
    @ManyToOne 
    @JoinColumn(name="pid", updatable=false) 
    public Org getParentOrg() { 
        return parentOrg; 
    } 
 
    public void setParentOrg(Org parentOrg) { 
        this.parentOrg = parentOrg; 
    } 
 
    @OneToMany(mappedBy="parentOrg") 
    @JoinColumn(name="pid") 
    @OrderBy("code") 
    public Set<Org> getChildOrgSet() { 
        return childOrgSet; 
    } 
 
    public void setChildOrgSet(Set<Org> childOrgSet) { 
        this.childOrgSet = childOrgSet; 
    } 


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

<span style="font-size:18px;"> <!-- Hibernate核心对象 --> 
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
          <!--省略……--> 
         <!--指定进行了Hibernate注解开发的包,方便框架进行扫描设置--> 
         <property name="packagesToScan"> 
            <list> 
                <value>com/ljh/ppp/domain</value> 
            </list> 
        </property> 
</span> 
这样Hibernate框架的注解开发基本上就算完毕了,
分享到:
评论

相关推荐

    struts2+spring+hibernate s2sh半注解结合方式框架搭建开发

    在本项目中,"s2sh半注解结合方式框架搭建开发"指的是使用Struts2、Spring和Hibernate,并通过注解的方式来进行部分配置,以简化传统的XML配置文件,提高开发效率。 首先,让我们来详细了解一下这三个框架的核心...

    如何使用Hibernate Tools生成Entity Bean

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式处理数据库操作。为了简化开发过程,...同时,学习使用逆向工程和注解配置也是提升Java ORM开发技能的重要步骤。

    创建hibernate的连接池及封装bean类的方式(图解)

    - **Hibernate Common Annotations**:注解支持。 - **Oracle JDBC Driver**:Oracle数据库驱动。 - **C3P0 or HikariCP**:连接池实现。 如果使用Maven,可以在pom.xml文件中添加如下依赖: ```xml &lt;groupId&gt;...

    一个基于注解的SSH框架的登录功能实现

    以上就是基于注解的SSH框架实现登录功能的主要步骤和涉及的关键技术点。通过注解的使用,整个项目的配置大大简化,开发效率得以提升。同时,SSH框架的整合为复杂业务逻辑提供了良好的分层结构和组件化的支持。在实际...

    基于注解的Spring MVC+Hibernate简单入门

    本文介绍了如何使用Spring MVC与Hibernate结合来开发基于注解的应用程序。通过使用注解简化了配置工作,并展示了如何搭建整个开发环境。这种开发模式不仅提升了开发效率,还使得代码更加简洁易读。对于初学者来说,...

    hibernate注解详解说明

    Hibernate 是一个流行的对象关系映射(ORM)框架,它允许开发者使用 Java 对象来操作数据库。在 Hibernate 中,注解是一种简洁且强大的工具,用于替代传统...理解并灵活运用这些注解是成为 Hibernate 专家的关键步骤。

    让Hibernate同时支持xml和注解两种映射方式

    Spring提供了`LocalSessionFactoryBean`用于配置基于XML的Hibernate映射,而`AnnotationSessionFactoryBean`则用于处理基于注解的映射。这两个类分别处理不同的映射方式,所以默认情况下,它们不能直接共存于同一个...

    基于注解ssh的通用dao的crud

    总结起来,基于注解的SSH通用DAO的CRUD实现主要涉及以下步骤: 1. 使用Spring注解定义bean、组件扫描和依赖注入。 2. 在Struts2 Action中定义CRUD操作并使用注解配置请求路径和结果页面。 3. 利用Hibernate注解定义...

    Spring+Hibernate+Strust 整合开发步骤

    以下是对Spring、Hibernate、Struts整合开发步骤的详细解释: 1. **创建J2EE Web工程** 在MyEclipse 5.0 GA环境下,首先我们需要创建一个新的J2EE Web工程,这是所有后续操作的基础。 2. **配置数据源** 数据源...

    ssh代码整合基于注解方式的

    压缩包中的"SSH(基于注解)"可能包含了这样一个完整的示例项目,包括Struts2的Action、Spring的配置、Hibernate的实体类以及相应的整合配置。通过对这些文件的分析和学习,可以更好地理解SSH的注解整合方式。 总结,...

    Hibernate中注解的使用

    在Java的持久化框架Hibernate中,注解的...总的来说,Hibernate的注解配置使得开发更加便捷,但同时也要求开发者对注解有深入理解,才能更好地利用这一特性。在实际项目中,结合注解和XML配置可以提供更大的灵活性。

    SSH注解方式整合小例子

    **Struts2** 是一个基于MVC设计模式的Action驱动的Web应用框架,它通过注解可以实现Action类的声明式配置。例如,我们可以在Action类上使用`@Action`注解来指定URL映射,以及在方法上使用`@Result`注解定义结果页面...

    基于全注解的ssh完整例子

    在这个"基于全注解的SSH完整例子"中,我们将探讨如何利用注解来简化SSH框架的配置,提高开发效率。 Spring框架是SSH的核心,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented ...

    SpringMVC、spring、hibernate简单整合实例(注解开发,附开发流程)

    这个“SpringMVC、spring、hibernate简单整合实例”通过注解开发的方式,旨在帮助初学者理解这三个框架如何协同工作。 SpringMVC是Spring框架的一个模块,主要负责Web应用的Model-View-Controller(MVC)架构。它的...

    Spring mvc 和HIbernate结合 通过注解进行开发

    通过以上步骤,我们可以构建一个基于注解的Spring MVC和Hibernate整合项目。这种开发方式减少了XML配置,提高了开发效率,使得代码更加清晰易懂。然而,需要注意的是,虽然注解简化了配置,但在大型项目中,过度依赖...

    Struts2_Spring_Hibernate整合开发实例

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自在应用程序的不同层面发挥着重要作用。Struts2作为MVC(模型-视图-控制器)框架,负责处理请求和控制应用程序流程;Spring则是一个全面的后端框架,...

    最新Struts2.1+Spring2.5+Hibernate3.3整合开发

    Struts2.1、Spring2.5和Hibernate3.3是Java Web开发中经典的三大框架,它们的整合应用是企业级应用开发中的常见实践。这三个框架的集成为开发者提供了强大的功能,包括模型-视图-控制器(MVC)架构、依赖注入(DI)...

    SMART系统、 基于 spirng mvc、 spring、 hibernate框架开发

    在基于这些框架的开发中,常见的步骤包括: 1. 配置Spring:设置bean的定义,管理依赖关系。 2. 设计数据模型:创建实体类,使用Hibernate注解进行ORM映射。 3. 创建数据库连接:配置Hibernate的SessionFactory和...

Global site tag (gtag.js) - Google Analytics