首先 :添加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);
}