首先 :添加Hibernate工具
一、 help—>Install NewSoftWare_->粘贴【http://download.jboss.org/jbosstools/neon/stable/updates/】->点击add然后等...->选择Jboss Web and Java EE Development目录下的HibernateTools。
2创建一个java项目 为其添加jar包。
对项目进行【右击】----->BuildPath---->addLibraries----->User Library-->
这里需要3类jar包
1> 导入Mysql的jdcb驱动
2> junit4
3>hibernate
1.antlr-2.7.7.jar
2.dom4j-1.6.1.jar
3.hibernate-commons-annotations-4.0.1.Final.jar
4.hibernate-core-4.1.10.Final.jar
5.hibernate-jpa-2.0-api-1.0.1.Final.jar
6.javassist-3.15.0-GA.jar
7.jboss-logging-3.1.0.GA.jar
8.jboss-transaction-api_1.1_spec-1.0.0.Final.jar
二、建立hibernate配置文件hibernate.cfg.xml 项目【右击】->new->other->hibernate->
<?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-configuration>
<session-factory>
// 数据库的连接
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///hibernate?useUnicode=true&characterEncoding=UTF-8</property>
//使用的方言
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
//是否将SQL语句显示到后台
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<property name="current_session_context_class">thread</property>
其映射资源为:包名/Student.hbm.xml
<mapping resource="Student.hbm.xml"/>
</session-factory> </hibernate-configuration>
hibernate.cfg.xml详情请看http://www.cnblogs.com/pepcod/archive/2013/02/19/2917376.html
三、创建持久化类
需满足
1.公有类
2.提供共有的不带参数的默认的构造方法
3.属性私有
4.属性setter/getter封装
四 创建对象-关系映射文件 步骤: src->
选择自己需要的对象。
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Generated 2017-6-6 9:24:22 by Hibernate Tools 3.5.0.Final --> <hibernate-mapping> <class name="hibernate.Student" table="STUDENT"> <id name="sid" type="int"> <column name="SID" /> <generator class="assigned" /> </id> <property name="sname" type="java.lang.String"> <column name="SNAME" /> </property> <property name="gender" type="java.lang.String"> <column name="GENDER" /> </property> <property name="brithday" type="java.util.Date"> <column name="BRITHDAY" /> </property> <!-- <property name="address" type="java.lang.String"> <column name="ADDRESS" /> </property> --> <property name="picture" type="java.sql.Blob" access="field"> <column name="PICTURE" /> </property> <component name="address" class="hibernate.Address"> <property name="postcode" column="POSTCODE"/> <property name="phone" column="PHONE"/> <property name="address" column="ADDRESS"/> </component> </class> </hibernate-mapping> <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Generated 2017-6-6 9:24:22 by Hibernate Tools 3.5.0.Final --> <hibernate-mapping schema="数据库schema的名字" catalog="数据库catalog的名字" default-cascade="none" 其默认值为none 默认的级联风格 default-access="property" 其为默认值,Hibernate用来访问所有属性的策略。 可以通过实现PropertyAccessor接口自定义 default-lazy="true" 其为默认值 指定未明确注明lazy属性的Java属性和集合类, Hibernate会采取什么样的默认加载风格 auto-import="true" 其为默认值:指定是否在查询语言中使用非全限定的类名(仅限于本映射文件中的类) package=""指定一个包前缀,如果在映射文档中没有指定全限定类名,就使用这个作为包名 > <!-- name 定义的持久化类或者接口的java全限定名 table 对应数据库表名 --> <class name="hibernate.Student" table="STUDENT"> <!-- id必须定义 对应数据库表主键字段,一般为每一个实例包含唯一的标识 --> <!-- name 标识属性的名字 type 标识Hibernate类型的名字(如果没配置,hibernate将会转化为相应的数据库类型) --> <!-- column 主键字段的名字 --> <id name="sid" type="int"> <column name="SID" /> <!-- 用来为该持久化类的实例生成唯一的标识 --> <generator class="assigned" /> </id> <!-- 为类定义了一个持久化的,JavaBean风格的属性 type 为java类型 --> <property name="sname" type="java.lang.String"> <column name="SNAME" /> </property> <property name="gender" type="java.lang.String"> <column name="GENDER" /> </property> <property name="brithday" type="java.util.Date"> <column name="BRITHDAY" /> </property> <!-- <property name="address" type="java.lang.String"> <column name="ADDRESS" /> </property> --> <property name="picture" type="java.sql.Blob" access="field"> <column name="PICTURE" /> </property> <!--组件属性 ----- 实体类Student的属性address 是用户自定义的Address类的对象 --> <component name="address" class="hibernate.Address"> <property name="postcode" column="POSTCODE"/> <property name="phone" column="PHONE"/> <property name="address" column="ADDRESS"/> </component> </class> </hibernate-mapping> 详情请看http://blog.csdn.net/csh624366188/article/details/7578939 之后将这个配置文件在hibernate.cfg.xml中进行配置 <mapping resource="Student.hbm.xml"/> 五使用junit4进行测试 使用hibernate API编写访问数据库代码 public class testSaveStudent { private SessionFactory sessionFactory; private Session session; private Transaction transaction; @Before public void init() { //创建配置对象 读取.cfg.xml文件 Configuration config=new Configuration().configure(); //创建服务注册对象 ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry(); //创建会话工厂对象 读取 sessionFactory=config.buildSessionFactory(serviceRegistry); //会话对象 session=sessionFactory.openSession(); //开启事务 transaction=session.beginTransaction(); } @After public void destroy() { //默认是非自动提交的方式,所以session在保存对象时,不开启事务,并且手工提交事务,对象并不会真正保存在数据库中 //hibernnate像jdbc自动提交事务,必须调用session对象doWork()方法,获取jdbc的connection后,设置其为自动提交事务模式 //(注意:通常并不推荐这样做) transaction.commit();//提交事务 session.close(); sessionFactory.close(); } @Test public void testAddress() { Address address=new Address("1233","4321","123"); Student s=new Student(3,"张三丰","男",new Date(),address); session.save(s); }