热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

hibernate实现有两种配置,xml配置与注解配置

(1):xml配置:hibernate.cfg.xml(放到src目录下)和实体配置类:xxx.hbm.xml(与实体为同一目录中)<?xmlversion1.0encodingutf

1):xml配置:hibernate.cfg.xml(放到src目录下)和实体配置类:xxx.hbm.xml(与实体为同一目录中)

xmlversion='1.0'encoding='utf-8'?>

DOCTYPEhibernate-configurationPUBLIC

       "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

      "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

 

   <session-factory>

       

       <propertyname="connection.driver_class">

com.mysql.jdbc.Driver

property>

       <propertyname="connection.url">

jdbc:mysql://localhost:3306/hxj

property>

       <propertyname="connection.username">rootproperty>

       <propertyname="connection.password">rootproperty>

 

       

      1

 

       

       <propertyname="dialect">

org.hibernate.dialect.MySQLDialect

property>

 

       

     <propertyname="current_session_context_class">threadproperty>

 

       

       <propertyname="cache.provider_class">

org.hibernate.cache.NoCacheProvider

property>

 

       

       <propertyname="show_sql">trueproperty>

 

       

       也可以用create/create-drop/update/validate代替, create 表示可以根据实体配置文件来自动生成表(只能生成表).

-->

       <propertyname="hbm2ddl.auto">updateproperty>

 

 //实体配置类

 

   session-factory>

hibernate-configuration>

 

(2): 实体配置类:xxx.hbm.xml

xmlversion="1.0"?>

DOCTYPEhibernate-mappingPUBLIC

       "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

 

<hibernate-mapping package=”com.wsw.struts.model>

   <classname="Person"table="per">

      <idname="id"column="id">

           <generatorclass="native"/>   //字段自增

       id>

      <propertyname="username"column="p_username"/>

      <propertyname="age"column="p_age"/>

   class>

hibernate-mapping>

 

3):测试类(包括获取SessionFactory类和实体测试类)

SessionFactory类:HibernateUtil

publicclass HibernateUtil {

   privatestaticfinal SessionFactorysessionFactory;

   static {

       try {

           // Create the SessionFactory from hibernate.cfg.xml

           sessionFactory =new Configuration().configure().buildSessionFactory();

        }catch (Throwable ex) {

           // Make sure you log the exception, as it might be swallowed

            System.err.println("Initial SessionFactory creation failed." + ex);

           thrownew ExceptionInInitializerError(ex);

        }

    }

   publicstatic SessionFactory getSessionFactory() {

       returnsessionFactory;

    }

}


实体测试类:
PersonManager

-----------------------------------------------------------------------------------

publicclass PersonManager {

   publicstaticvoid main(String[] args) {

         createAndStorePerson();

        HibernateUtil.getSessionFactory().close();

}

 

   privatestaticvoid createAndStorePerson() {

        Session session =                   //通过Session工厂获取Session对象

HibernateUtil.getSessionFactory().getCurrentSession();

        session.beginTransaction();         //开始事务

       

        Person person =new Person();

        person.setUsername("何小景");

        person.setAge(26);

        session.save(person);

       

        session.getTransaction().commit(); //提交事务

    }

}


 

4):注解方式:

注解的方式与xml很很多类似:

首先是需要加入4jar包:hibernate-commons-annotations.jar hibernate-annotations.jar

ejb3-persistence.jar hibernate-jpa-2.0-api-1.0.1.Final.jar

下面是不同的地方:

1):hibernate.hbm.xml文件中把引用:xxx.hbm.xml改为引用实体类:

     即把:

改为:

2):获取SessionFactory方式发生了变化:

      即:由SessionFactory sf = new Configuration().configure().buildSessionFactory()

    改为:SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory()

3):注解方式不需要在xxx.hbm.xml把实体类与表进行映射。而采用在实体类中进行注解。

注意:1):如果实体类属性名与表字段名不一致的时候,要么都注解在属性前,要么都注解在get方法前。不能部分注解在属性前,部分注解在方法前。

 (2如果实体类属性名与表字段名一致的时候,可以部分注解在属性前,部分注解在方法前。

 (3):如果在实体类中某些属性不注解:(属性和get都不写注解),默认为表字段名与实体类属性名一致。

 (4):如果实体类的某个成员属性不需要存入数据库中,使用@Transient进行注解就可以了。即类似于:(xxx.hbm.Xml配置中的某些字段不写(就是不需要对这个成员属性进行映射))

 (5):表名称可以在实体类前进行注解。

 (6所有这些注解在:javax.persistence包下。而不是在hibernate包中。

 ---------------------------------------------------------------------------------------------------------------------

@Entity                        //表示为实体类

@Table(name="t_teacher")      //表名注解

publicclass Teacherimplements Serializable {

   

   privateintid;

   private Stringusername;

   privateintage;

   

   @Id              //表示主键

   @GenericGenerator(name ="generator", strategy ="increment")  @GeneratedValue(generator ="generator")  //自增长

   @Column(name ="id")                                 //类属性对应着表字段

   publicint getId() {

      returnid;

    }

   publicvoid setId(int id) {

      this.id = id;

    }

   

   @Column(name="t_username")                      //类属性对应着表字段

   public String getUsername() {

      returnusername;

    }

   

   publicvoid setUsername(String username) {

      this.username = username;

    }
    

    @Column(name="t_age")                     //在实体类属性进行注解,类属性对应着表字段
   
publicint getAge() {

      returnage;

    }

   publicvoid setAge(int age) {

      this.age = age;

    }

 

 

 

----转载自:http://www.blogjava.net/yxhxj2006/archive/2012/06/30/381861.html


推荐阅读
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
author-avatar
小蚊子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有