Hibernate 學習筆記一


Hibernate 學習筆記一


今天學習了hibernate的一點入門知識,主要是配置domain對象和表的關系映射,hibernate的一些常用的配置,以及對應的一個向數據庫插入數據的小例子。期間碰到了兩個Exception。
我們在使用hibernate的時候需要引入許多jar包,如果jar包少引入了或者版本老舊就會報錯,下面是我遇到的兩個Exception ,第一個是因為項目缺少slf4j-api.jar和slf4j-log4j12.jar這兩個jar包。第二個是因為缺少log4j.jar這個包。一般這種問題只要百度一下報錯就可以找到原因,只要下載相應的包,導入項目就可以解決問題。


**1. Exception in thread "main" java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class **org.slf4j.LoggerFactory
2. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger


我親測無誤的使用到的開發包 點我下載


項目的結構圖


運行結果
控制台里可以看到最后一行是執行的sql語句。

數據庫中可以看到插入了Jawen112這個雇員。


主要代碼和配置


測試后沒問題的代碼。


test.java
向數據庫插入一個Employee對象

package com.vv.view;

import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.*;

import com.vv.domain.Employee;
import com.vv.service.EmpoyeeService;

public class test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		
		//我們使用hibernate完成crud操作[這里我們只見對象不見表]
		//現在不使用servcie,直接測試
		//1.創建Configuration  ,  該對象用於讀取"hibernate.cfg.xml" 並完成初始化
		Configuration configuration=new Configuration().configure("hibernate.cfg.xml");                 
		//2.創建sessionfactory[],這是一個會話工廠,是一個重量級的對象
		//后面做成單態,只能有一個
		SessionFactory sessionFactory=configuration.buildSessionFactory();
		//3.創建Session 相當於jdbc中的connection  一個會話
		Session session=sessionFactory.openSession();
		//4.對hibernate而言,要求程序員,在進行增加,刪除,修改的時候使用事務提交
		Transaction  transaction=session.beginTransaction();
		
		//添加一個雇員
		Employee employee1=new Employee();
		employee1.setName("Jawen112");
		employee1.setEmail("995625851@qq.com");
		employee1.setHirdate(new Date());
		//保存
		session.save(employee1);//save(employee1) 就是持久化該對象(把對象保存到了數據庫中)    ->insert into....  [被hibernate封裝]
		//提交
		transaction.commit();
		session.close();
	}
}

和 Employee 對應的數據庫


Employee.java
Employee->雇員類(屬性id,年齡,郵箱,入職日期)

package com.vv.domain;

import java.util.Date;


//建議domain對應名稱首字母大寫
//domain對象   javabean   pojo(plain old/ordinary java object) 簡單的java對象
public class Employee {

	private Integer id;
	private String name;
	private String email;
	private Date hirdate;
	
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Date getHirdate() {
		return hirdate;
	}
	public void setHirdate(Date hirdate) {
		this.hirdate = hirdate;
	}

}

Emploee.hbm.xml
這里配置domain對象和表的關系映射

<?xml version="1.0" encoding="utf-8"?>
<!-- 映射文件需要dtd來指定格式   -->
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    
    <!-- 該文件用於配置domain對象和表的關系映射 -->
   <hibernate-mapping package="com.vv.domain"> 
      <class name="Employee" table="employee">
           <!-- id元素用於指定主鍵屬性 -->
          <id name="id" column="id"  type="java.lang.Integer">
              <!-- 該元素用於指定主鍵值生成策略 hilo native increment sequence uuid-->
              <generator class="native"></generator>
          </id>
          
          <property name="name" type="java.lang.String">
              <!--數據庫中的列 -->
              <column name="name" not-null="false"/>
          </property>
          
          <property name="email" type="java.lang.String">
              <column name="email" not-null="false"/>
          </property>
          
          <property name="hirdate" type="java.util.Date">
              <column name="hirdate" not-null="false"/>
          </property>
          
      
      </class>
    </hibernate-mapping>	

hibernate.cfg.xml
這里配置一些和數據庫有關的配置(驅動,用戶,密碼,url,管理的對象映射文件即Emploee.hbm.xml 等等)

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- hibernate  設計者給我們提供了一些常用的配置 -->
        <!-- 配置使用的driver -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <!-- 配置使用的用戶 -->
        <property name="connection.username">xiaozhi</property>
        <!-- 配置使用的密碼 -->
        <property name="connection.password">ycJWr9hBmKTb</property>
        <!-- 配置使用的url -->
        <property name="connection.url">jdbc:mysql://127.0.0.1:3306/vmalogo</property>
        <!-- 配置dialect 方言,明確告訴hibernate連接的是哪種數據庫 -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- 顯示出sql語句 -->
        <property name="show_sql">true</property>
        <!-- 指定管理的對象映射文件 -->
        <mapping  resource="com/vv/domain/Emploee.hbm.xml" />
                    
    </session-factory>
</hibernate-configuration>     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM