程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> Hibernate(面向對象的數據庫操作)

Hibernate(面向對象的數據庫操作)

編輯:DB2教程

Hibernate(面向對象的數據庫操作)


JPA,java persistance api,java持久層接口,即與數據庫打交道的一些接口。實現交給各個廠商去實現。

ORM,Object/Relation Mapping,對象/關系數據庫映射。面向對象的數據庫操作,底層仍是sql語句。

獲得

hibernate的maven依賴。

	org.hibernate
	hibernate-core
	4.3.10.Final


  
    mysql  
    mysql-connector-java  
    5.1.31  
  


Hibernate是一個優秀的ORM實現。使用方法見下。

配置文件

名為hibernate.cfg.xml,一般放在src目錄下。它使用c3p0作為數據庫連接池。
 


	
	
		com.mysql.jdbc.Driver 
		jdbc:mysql://me.likeyichu.com:3306/AliyunDB
		true 
		utf-8
		root
		密碼
		
		
		20
		1
		5000
		100
		3000
		true
		2
		
		
		
		true 
		
		
		org.hibernate.dialect.MySQLDialect 
		
		
	
    


常用類

@ javax.persistence.Entity
表明這個類對應著數據庫中某張表中的實體。
@javax.persistence.Table
該注解的name屬性標明java類與哪張表相對應。


@javax.persistence.Id
標明這個字段是數據庫表中的主鍵。
@javax.persistence.Column
該注解的name屬性指定該字段與表中的哪一列相對應。默認是同名的相互匹配。
@javax.persistence.Temporal
數據庫中時間類型比較多,賦值為TemporalType.TIMESTAMP表示時間戳。
@javax.persistence.Transient
當某個pojo的字段不在表中的時候,可以加上這個注釋,避免錯誤。

HQL

org.hibernate.SharedSessionContract.createQuery(String queryString)
用給定的hql語句創建一個query。
List org.hibernate.Query.list()
將查詢結果以list的形式返回。

代碼示例

package com.likeyichu.webservice.resource.me;

import java.sql.Timestamp;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

@Entity
@Table( name = "studentTable")
public class Student {
	@Id
	int id;
	String name;
	boolean isGirl;
	
	@Column(name="time_stamp")
	@Temporal(TemporalType.TIMESTAMP)
	Date timestamp;
	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public Date getTimeStamp() {
		return timestamp;
	}

	public void setTimeStamp(Date timeStamp) {
		this.timestamp = timeStamp;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public boolean isGirl() {
		return isGirl;
	}

	public void setGirl(boolean isGirl) {
		this.isGirl = isGirl;
	}
	public static void main(String[] args) {
		//加載src/hibernate.cfg.xml作為配置
		Configuration conf=new Configuration().configure();
		//so long,annoying
		ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(conf.getProperties()).buildServiceRegistry();
		SessionFactory sf=conf.buildSessionFactory(serviceRegistry);
		Session sess=sf.openSession();
		Transaction ts=sess.beginTransaction();
		Student student=new Student();
		student.setName("qiqi");
		//添加一行數據
		sess.save(student);
		ts.commit();
		//獲得所有女同學,組裝成一個list。
		@SuppressWarnings("unchecked")
		List<Student> list=sess.createQuery("from Student  where isGirl=true").list();
		System.out.println(list);
		sess.close();
		sf.close();
	}
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved