Hibernate_基本配置

来源:互联网 发布:淘宝女式皮鞋特价 编辑:程序博客网 时间:2024/05/17 05:01

hibernate是ORM框架的中典型代表,将要操作的对象转换为sql语句,然后通过jdbc执行SQL。
使用Hibernate开发要先把相对应的jar包引入到web项目中

在src下配置一个hibernate.cfg.xml文件

<!-- 引入头部文件 --><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><!-- 这个是hibernate的配置文件-><hibernate-configuration>    <!-- 配置会话工厂 -->    <session-factory>        <!-- 驱动名称 下面这个配置的是mysql的 -->        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>        <!-- URL -->        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/sxt</property>        <!-- 用户名 -->        <property name="hibernate.connection.username">root</property>        <!-- 密码 -->        <property name="hibernate.connection.password">123456</property>        <!--方言:hibernate根据方言类将对象"翻译"成相对于的sql语句,因为每个数据库的sql语句有的不同,所以这边声明用的哪个的数据库的哪个版本,然后会根据你的声明生成对应的sql语句 -->        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>        <!-- 是否打印生成的sql语句 -->        <property name="hibernate.show_sql">true</property>        <!-- 引入映射文件,有两种引入方式:            1.引入xml文件,这种xml文件对于表与表之间的关系会更加的明了,但是会显得文件比较的多,比较的乱            用的是resource引入的,注意:由于不好区分哪个是配置,哪个是文件夹,所有zaihibernate里面用/代表文件夹            2.引入注解的样式,这样的文件会写法相对来说比较的简单,但是表关系不容易理清            用的是class引入的注解         -->        <mapping resource="com/sxt/beans/Teacher.hbm.xml" />        <mapping class="com.sxt.beans.Buser" />    </session-factory></hibernate-configuration>

两种引入的方式

第一种:建xml文件
在和bean文件同层目录下下面建一个
javaBean名字+.hbm.xml文件,如实体bean名字是Teacher,名字就是Teacher.hbm.xml
在里面配置如下

<!-- 头部文件和hibernate.cfg.xml文件的头部基本一样,但是所有configuration的地方全部改为mapping,它大写的地方,改的地方也大写 --><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><!-- 配置实体和表之间的映射 --><hibernate-mapping>    <!-- name:实体类的地址+名字      table:可选属性,用于配置与实体类对应的数据库表,如果表面与类名一致,可以省略. 也就table="Teacher"可删-->    <class name="com.sxt.beans.Teacher" table="Teacher">        <!--              id标签,数据库中的主键字段             name:配置类中的属性名        column:可选属性,配置与此属性对应的数据库表中的字段名,如果字段名与属性名一致,可以省略.         -->        <id name="tid" column="tid">            <!-- 是否有自增长字段 ,下面这个是MySql和SQL Server的自增长字段                如果是oracle的自增长字段的话要把identity改为sequence,里面写上  表明_seq(也就是你在数据库中这个表设的自增长序列),如:                <generator class="sequence">teacher_seq</generator>            -->            <generator class="identity"></generator>        </id>        <!-- 下面为字段名,同上,如果字段名与属性名一致,column="tname"就可省,后面的type也是可省,会自动找对应的来转换 -->        <property name="tname" column="tname" type="java.lang.String"></property>        <property name="turl" column="turl" type="java.lang.String"></property>        <property name="tsex" column="tsex" type="java.lang.Integer"></property>        <property name="tage" column="tage" type="java.lang.Integer"></property>        <property name="taddr" column="taddr" type="java.lang.String"></property>        <property name="tprice" column="tprice" type="java.lang.Double"></property>        <property name="birthday" column="birthday" type="java.util.Date"></property>    </class></hibernate-mapping>

注:上面可省的地方尽量省略,这样会减轻他的读取和编译的效率
省略完之后就是这样

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><!-- 配置实体和表之间的映射 --><hibernate-mapping>    <class name="com.sxt.beans.Teacher">        <id name="tid">            <generator class="identity"></generator>        </id>        <property name="tname"></property>        <property name="turl"></property>        <property name="tsex"></property>        <property name="tage"></property>        <property name="taddr"></property>        <property name="tprice"></property>        <property name="birthday"></property>    </class></hibernate-mapping>

第二种:注解方式

package com.sxt.beans;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;/** * Buser entity. @author MyEclipse Persistence Tools *///声明这个Buser.java是个bean实体@Entity//声明对应的数据库中的表的名字为buser表@Table(name="buser")public class Buser implements java.io.Serializable {    //声明bid为表中的主键id    @Id    //声明自增长,下面是mySql的,如果是oracle的为    @GeneratedValue(strategy=GenerationType.IDENTITY)    private Integer bid;    //声明对应的表中名字是buername    @Column(name="busername")    private String busername;    //声明对应表中的名字是busepwd    @Column(name="buserpwd")    private String buserpwd;    //声明对应表中的名字是nname    @Column(name="nname")    private String nname;    // Constructors    /** default constructor */    public Buser() {    }    /** full constructor */    public Buser(String busername, String buserpwd, String nname) {        this.busername = busername;        this.buserpwd = buserpwd;        this.nname = nname;    }    // Property accessors    public Integer getBid() {        return this.bid;    }    public void setBid(Integer bid) {        this.bid = bid;    }    public String getBusername() {        return this.busername;    }    public void setBusername(String busername) {        this.busername = busername;    }    public String getBuserpwd() {        return this.buserpwd;    }    public void setBuserpwd(String buserpwd) {        this.buserpwd = buserpwd;    }    public String getNname() {        return this.nname;    }    public void setNname(String nname) {        this.nname = nname;    }}

注:所有注解的jar文件都是javax.persistence的,不要用成org.hibernate.annotations这个包里面的注解

详细注解

原创粉丝点击