欢迎投稿

今日深度:

Hibernate(面向对象的数据库操作)

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();
	}
}

 

www.htsjk.Com true http://www.htsjk.com/DB2/20452.html NewsArticle Hibernate(面向对象的数据库操作) JPA,java persistance api,java持久层接口,即与数据库打交道的一些接口。实现交给各个厂商去实现。 ORM,Object/Relation Mapping,对象/关系数据库映射。面...
评论暂时关闭