设为首页 加入收藏

TOP

Hibernate(面向对象的数据库操作)
2015-11-21 01:34:15 来源: 作者: 【 】 浏览:0
Tags: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 list=sess.createQuery("from Student  where isGirl=true").list();
		System.out.println(list);
		sess.close();
		sf.close();
	}
}

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MongDB启动警告WARNING:softrlimi.. 下一篇05.JDBC编程之处理存储过程&Trans..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: