Hibernate(面向对象的数据库操作)
JPA,java persistance api,java持久层接口,即与数据库打交道的一些接口。实现交给各个厂商去实现。ORM,Object/Relation Mapping,对象/关系数据库映射。面向对象的数据库操作,底层仍是sql语句。
获得
hibernate的maven依赖。org.hibernate hibernate-core4.3.10.Final mysql mysql-connector-java5.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(); } }
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。