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>

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值