Hibernate 学习笔记
来源:互联网 发布:淘宝拍照灯光怎么打 编辑:程序博客网 时间:2024/06/18 12:08
一.Hibernate应用的开发步骤
1. 开发持久化类,由POJO + 持久化注解组成
2. 获取Configuration
3. 获取SessionFactory
4. 获取Session,打开事务
5. 用面向对象的方式操作数据库
6. 关闭事务,关闭Session
二.持久化类及注解
@Entity@Table (name= "news_inf")publicclass News { // 消息类的标识属性 @Id @GeneratedValue(strategy =GenerationType.IDENTITY) private Integer id; // 消息标题 private String title; // 消息内容 private String content; //省略所有的getter和setter方法
·类级注解
@Entity注解声明该类是一个Hibernate的持久化类
@Table 指定该类映射的表。此处name指定该类映射的表是news_inf表
@Id 用于指定该类的标识属性,标识属性通常映射到数据库的主键列
@GeneratedValue 用于指定主键生成策略,其中strategy指定了主键生成策略为IDENTITY,也就是自动增长的主键生成策略。
·属性级注解
@Column 指定某个属性所映射的数据列的详细信息,如列名、列字段长度等
@Formula 该注解的value属性可指定一个SQL表达式,指定该属性的值将根据表达式来计算。拥有该注解的属性不保存在数据库里。
@Generated 为属性指定该注解后,每当Hibernate执行一条insert或update语句时,Hibernate会立即执行一条select语句来获得该数据列的值。
@Translent 修饰不想持久化保存的属性
@Enumerated 修饰枚举类型的属性,该注解的value值为EnumType.STRING或EnumType.ORDINAL
@Lob、@Basic注解来保存图片等大数据类型
@Temporal 修饰日期类型的属性,value属性支持TemporalType.DATE、TemporalType.TIME和TemporalType.TIMESTAMP。
date : yyyy-MM-dd time : hh:mm:ss timestamp : yyyy:MM:dd hh:mm:ss
三.获取Session,打开事务
package keynes;import org.hibernate.*;import org.hibernate.service.*;import org.hibernate.boot.registry.*;import org.hibernate.cfg.*;public class HibernateUtil {public static final SessionFactory sessionFactory;static {try {// 使用默认的hibernate.cfg.xml配置文件创建Configuration实例Configuration cfg = new Configuration().configure();// 以Configuration实例来创建SessionFactory实例ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();sessionFactory = cfg.buildSessionFactory(serviceRegistry);} catch (Throwable ex) {System.err.println("Initial SessionFactory creation failed." + ex);throw new ExceptionInInitializerError(ex);}}// ThreadLocal可以隔离多个线程的数据共享,因此不再需要对线程同步public static final ThreadLocal<Session> session = new ThreadLocal<Session>();public static Session currentSession() throws HibernateException {Session s = session.get();// 如果该线程还没有Session,则创建一个新的Sessionif (s == null) {s = sessionFactory.openSession();// 将获得的Session变量存储在ThreadLocal变量session里session.set(s);}return s;}public static void closeSession() throws HibernateException {Session s = session.get();if (s != null)s.close();session.set(null);}}
打开事务:
Transaction tx =sess.beginTransaction();
四.用面向对象的方式操作数据库
1. 持久化对象的状态:瞬态、持久化、脱管
2. 改变持久化对象状态的方法
3. 加载、更新、删除持久化实体
- 【Hibernate学习笔记】hibernate入门
- Hibernate学习笔记:初识Hibernate
- Hibernate Synchronizer 学习笔记
- hibernate学习笔记1
- Hibernate 学习笔记
- Hibernate学习笔记
- Hibernate 学习笔记
- Hibernate 实例学习笔记
- Hibernate学习笔记(1)
- hibernate学习笔记
- Hibernate学习笔记(一)
- Hibernate学习笔记
- Hibernate学习笔记!- -
- Hibernate学习笔记(一)
- Hibernate学习笔记
- Hibernate 学习笔记
- Hibernate Synchronizer 学习笔记
- Hibernate 学习笔记
- android.support.v7.widget.AppCompatTextView cannot be cast to android.app.Activity
- Golang 实践之 Discuz 论坛模拟签到
- 自动装箱、拆箱
- Codeforces Round #368 (Div. 2)(D. Persistent Bookcase 离线 转化DAG)
- iOS 最新CocoaPods的安装和使用
- Hibernate 学习笔记
- epoll实例
- jvm面试题(五)
- maven镜像
- java架构师,推荐的书四
- 【BFS】POJ 3414
- Spark的注册服务
- 使用okhttp androidannotaion springandroid 等框架搭建请求网络的框架
- Android的优点和不足