`
smiky
  • 浏览: 254178 次
  • 性别: Icon_minigender_1
  • 来自: 天门
社区版块
存档分类
最新评论

hibernate1(begin)

阅读更多

参考资料来源于hibernate3.3.2 reference

1.实体类初识

下面是一个JavaBean,但是hibernate还不认识它

public class Event {
    private Long id;
    private String title;
    private Date date;
    public Event() {}
    public Long getId() {
        return id;
    }
    private void setId(Long id) {
        this.id = id;
    }
    public Date getDate() {
        return date;
}
    public void setDate(Date date) {
        this.date = date;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }

}

 这个类遵循标准的JavaBean约定,使用私有的field,添加相应的get与set方法。

 

id属性用于标识特定的event,所有的持久化类必须有一个标识属性。持久化类必须有一个无参构造器,hibernate会通过反射机制来创建对象。

 

2.hiberante映射文件(xxx.hbm.xml)

EVENT类对应的hibernate映射文件,它告诉hibernate在操作EVENT类的对象时对数据库中什么表进行操作:

<hibernate-mapping package="org.hibernate.tutorial.domain">
    <class name="Event" table="EVENTS">

            <id name="id" column="EVENT_ID">
            <generator class="native"/>//native表示跟据数据库本来所具有的能力来生成主键,如sqlserver可以自增,

那么在这里native就相当于identity,对于mysql,可用sequence来生成主键,那么native就对应sequence
        </id>

       <property name="date" type="timestamp" column="EVENT_DATE"/>
        <property name="title"/>
    </class>
</hibernate-mapping>

 

class属性用来告诉hibernate,Event类对应数据库中的EVENTS表

 

这里的id属性用于标识数据库中的主键。name=id表示JavaBean中的id属性是用于hibernate作为主键来访问的,coloumn=EVENT_ID表示数据库中该表的主键列名为EVENT_ID。

generator用于描述主键的生成策略。

 

property用于表示EVENT类中其它的属性。name表示EVENT类中属性的名称,type表示hibernate映射类型,它可以在java与sql类型之间转换。column表示该属性对应的数据库中表的名字。

那么像下面的title只有name,没有type与column,hibernate会自动通过反射机制得到title在EVENT类中的类型,然后给定一个相应的值,对于column,hibernate将默认表中的名称与类中的名称一致。

 

3.hibernate配置文件(xxx.cfg.xml)

有了hibernate映射文件,hibernate可以通过对对象的操作,进而操作数据库表,但是hibernate怎么知道你要操作什么数据库,及你的映射文件又放在什么地方呢?

所以这里就引出了hibernate配置文件,它有两种形式,hibernate.cfg.xml或hibernate.properties,一般以xml为主,

当你用new Configuration().configue()加载配置文件时,默认加载hibernate.cfg.xml,如果你的hibernate配置文件的名字为xxx.cfg.xml那么你必须为configue()方法加参数,即new Configuration().configue("xxx.cfg.xml")。

 

下面是一个配置文件的例子:

<hibernate-configuration>

一个session-factory对应一个数据库,在这里要配置数据库相关信息,并且hibernate映射文件信息必须在这里进行配置(指出映射文件所处的位置),只有这样,hibernate才能知道什么实体类与什么表对应。
    <session-factory>
        <!-- Database connection settings -->
        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>数据库驱动
        <property name="connection.url">jdbc:hsqldb:hsql://localhost</property>连接数据库的url
        <property name="connection.username">sa</property>用户名
        <property name="connection.password"></property>密码
     
        <!-- 方言,每种数据库有自己的特性,你要跟它交流就得用与之相应的方式,就跟你跟中国人说话要用汉语一样-->
        <property name="dialect">org.hibernate.dialect.HSQLDialect</property>

        <!-- 是否显示sql -->
        <property name="show_sql">true</property>


        <mapping resource="org/zengge/hibernate/pojo/Event.hbm.xml"/>映射文件位置,这个很关键,如果定位不对,就会报错。
    </session-factory>

</hibernate-configuration>

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Hibernate1

    1)hibernate需要导入这些包 2)因为我们需要操作数据库所以要导入数据库的包,我用的mysql数据库 3.创建数据库以及表 create database hibernate ; use hibernate; create table Student( id int(32) ...

    hibernate操作数据库笔记

    Session对象.beginTransaction().begin(); //开始一个事务 4.用Session对象的以下方法操作数据 (1).save(Object obj); (2).saveOrUpdate(Object obj); (3).delete(Object obj); //只要删除的对象设置了主键的值...

    Hibernate中的query 分页.doc

    1. import org.hibernate.Query; 2. 3. query.setFirstResult(0),query.setMaxResults(4);相当于MySQL中的limit 0, 4; 4. public void testQuery() { 5. Session session = null; 6. try { 7. session = ...

    ERRORLOG

    org.hibernate.TransactionException: JDBC rollback failed

    mysql+jdbc+jsp+Hibernate3.2+tomcattomcat5.028成功测试

    mysql,jdbc,Hibernate,tomcat [mysql+jdbc+jsp+Hibernate3.2+tomcattomcat5.028成功测试-简单] &lt;br&gt; 1 .数据库设计:库mydb 表events &lt;br&gt;EVENT_ID BIGINT(20) NOT NULL AUTOINC EVENT_DATE DATETIME...

    hibernate session.doc

    Transaction tx1 = session1.beginTransaction(); // 先加载一个持久化对象 Customer customer = (Customer)session.get(Customer.class, new Long(1)); session.delete(customer); // 计划执行一个delete语句

    Beginning Hibernate From Novice to Professional

    虽然用hibernate coding了不少,但对其原理框架结构不甚了解,这本书浅显易懂,可以帮助更深入理解hibernate的整体应用。

    jsp Hibernate批量更新和批量删除处理代码

    以下程序直接通过Hibernate API批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段: tx = session.beginTransaction();Iterator customers=session.find(“from Customer c where c.age&gt;0”).iterator();while...

    Hibernate 修改数据的实例详解

    Hibernate 修改数据 1.用 HQL方式来更新 在 这里修改 Person 的name 和age 通过 id 标识 Session currentSession = H3Utils.getCurrentSession(); currentSession.beginTransaction(); //创建 HQL String ...

    Hibernate通用数据库操作代码

    Transaction t = session.beginTransaction();session.save(o);t.commit();HibernateSessionFactory.clossSession();} delete方法 代码如下:public void delete(Object o,Serializable id){Session session = ...

    Hibernate5的Query接口浅析

    Configuration cfg=new Configuration().configure("hibernate.cfg.xml"); SessionFactory sf=cfg.buildSessionFactory(); Session session=sf.getCurrentSession(); Transaction tx=session.beginTransaction();

    Hibernate查询语言

    Transaction tx = session.beginTransaction(); for ( int i=0; i; i++ ) { Customer customer = new Customer(.....); session.save(customer); if ( i % 20 == 0 ) { //20, same as the JDBC batch size //20,与...

    jsp hibernate 数据保存操作的原理

    数据的保存,更新和删除: 1、Session.save()方法: Session.save()方法用于实体对象的持久化保存,也就是说当执行session.save()方法时会生成对应的insert SQL语句,完成数据的保存。如下面的代码: User user=new ...

    Hibernate延迟加载原理与实现方法

    主要介绍了Hibernate延迟加载原理与实现方法,较为详细的分析了Hibernate延迟加载的概念,原理与相关实现技巧,需要的朋友可以参考下

    SSH的jar包.rar

    5.session.beginTransaction();//创建事务Transation 6.persistent operate持久化操作 7.session.getTransaction().commit();//提交事务 8.关闭Session 9.关闭SesstionFactory Struts2使用Filter嵌入自己的框架...

    三大框架原理

    1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件 2.由hibernate.cfg.xml中的读取并解析映射信息 3.通过config.buildSessionFactory();//创建SessionFactory 4.sessionFactory.openSession()...

    低清版 大型门户网站是这样炼成的.pdf

    5.1.1 使用session的begintransaction()方法 272 5.1.2 使用session的close()方法 273 5.1.3 使用session的connection()方法 273 5.1.4 使用session的delete()方法 274 5.1.5 使用session的get()方法 274 5.1.6...

    iBATIS实战

    iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2002年发起的开放源代码项目。于2010年6月16号被谷歌托管,改名为MyBatis。是一个基于SQL映射支持Java和·NET的持久层框架。 iBATIS提供的...

    (JAVA)ATM银行系统论文内含代码

    第1章 绪 论 1 第2章 ATM银行取款系统的需求分析与总体设计 2 2.1 任务概述 2 2.1.1 目标 2 2.1.2 用户的特点 2 2.2 需求分析 2 2.2.1 对功能的规定 2 2.2.2 对性能的规定 3 2.2.3 灵活性 3 2.2.4 故障处理...

    iBATIS SQL Maps 开发指南

    SQL Map使用简单的XML配置文件将Java Bean映射成SQL语句,对比其他的数据库持续层和ORM框架(如JDO的实现,Hibernate等),SQL Map最大的优点在于它简单易学。要使用SQL Map,只要熟悉Java Bean,XML和SQL,就能使您...

Global site tag (gtag.js) - Google Analytics