Session
Session对象用于获取与数据库的物理连接。 Session对象是重量轻,设计了一个互动是需要与数据库每次被实例化。持久化对象被保存,并通过一个Session对象中检索。
会话中的对象不应该保持开放很长一段时间,因为他们通常不被线程安全的,他们应该被创建并根据需要摧毁他们。这次会议的主要功能是提供创建,读取和删除操作映射的实体类的实例。实例中可能存在以下三种状态之一在给定时间点:
短暂性: 持久化类的未与会话相关联,并在数据库中没有代表性,没有标识值的新实例被Hibernate认为是暂时的。
持久性: 可以做一个瞬态的实例持久化通过将它与一个会话相关联。持久性实例都有一个表示在数据库中,一个标识符值,与会话相关联。
独立性: 一旦我们关闭Hibernate的Session,持久化实例将成为一个分离的实例。
一个Session实例是可序列化的,如果它的持久化类是可序列化的。一个典型的事务应该使用下面的语句:
Session session = factory.openSession(); Transaction tx = null; try { tx = session.beginTransaction(); // do some work ... tx.commit(); } catch (Exception e) { if (tx!=null) tx.rollback(); e.printStackTrace(); }finally { session.close(); }
持久化类
Hibernate的整个概念是采取从Java类属性的值,并将持久到数据库表。一个映射文件Hibernate的帮助确定如何从拉动类的值,并将它们映射与表和相关的域。
其对象或实例将存储在数据库表中的Java类在Hibernate中称为持久化类。 Hibernate的效果最好,如果这些类遵循一些简单的规则,也称为普通Java对象(POJO)编程模型。有下列持久化类的主要规则,但是,这些规则并不是必需的。
将所有的持久化Java类需要一个默认的构造函数。
所有类应该包含为了让容易识别对象内Hibernate和数据库的ID。此属性映射到数据库表的主键列。
所有属性将被持久化应该声明为private,并已在JavaBean风格的定义的getXXX和setXXX方法。
Hibernate的关键功能,代理,取决于持久化类或者是非final的,或者说声明的所有公共方法的接口的实现。
所有的类不扩展或实现的EJB框架需要进行一些专门的类和接口。
POJO名称用于强调一个给定的对象是一个普通的Java对象,而不是一个特殊的对象,好更不是Enterprise JavaBean。
一个简单的POJO例子:
基于上面提到的一些规则,我们可以如下定义一个POJO类:
public class Employee { private int id; private String firstName; private String lastName; private int salary; public Employee() {} public Employee(String fname, String lname, int salary) { this.firstName = fname; this.lastName = lname; this.salary = salary; } public int getId() { return id; } public void setId( int id ) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName( String first_name ) { this.firstName = first_name; } public String getLastName() { return lastName; } public void setLastName( String last_name ) { this.lastName = last_name; } public int getSalary() { return salary; } public void setSalary( int salary ) { this.salary = salary; } }
名称 方法 实现 Hibernate 优势 劣势 Mybaties Jpa get 1. Hibernate 1.1 单独使用 1.1.1 For Idea 新建项目:【File】——>【New】——>【Project】——>【Java】——>【Hibernate、JavaEE Persistence】 添加数据连接驱动 配置数据源 根据数据库表生成实体类:【Persistence】——>【名称】
本文向大家介绍java struts2框架简介,包括了java struts2框架简介的使用技巧和注意事项,需要的朋友参考一下 一、Struts2简介 1、Struts2概述 Struts2是Apache发行的MVC开源框架。注意:它只是表现层(MVC)框架。 M:model-----数据封装------->javabean V:view------视图----------->jsp C
持久化类(Persistent Object )简称 PO,在 Hibernate 中, PO 是由 POJO(即 java 类或实体类)和 hbm 映射配置组成。 简单点说,持久化类本质上就是一个与数据库表建立了映射关系的普通 Java 类(实体类),例如 User 类与数据库中 user 表通过映射文件 User.hbm.xml 建立了映射关系,此时 User 就是一个持久化类。 持久化类的规
问题内容: 我在将Macruby与ActiveRecord(w /sqlite3)或Sequel一起使用时遇到了问题。还有其他建议吗?我需要一个简单的轻量级持久性机制来嵌入我的应用程序,该机制可以处理少于5个表,最多只能处理几万行。 问题答案: 以下组合有效: 诀窍是卸载“ sqlite3” gem和安装“ sqlite3-ruby”。
本文向大家介绍redis持久化的介绍,包括了redis持久化的介绍的使用技巧和注意事项,需要的朋友参考一下 1. RDB 1.1 RDB简介 RDB:在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。 工作机制:每隔一段时间,就把内存中的数据保存到硬盘上的指定文件中。 RDB是默认开启的! Redis会单独创建(fork)一个子
我正在阅读JPA 2.1规范,有这个片段: 通过调用新实体实例上的persist方法或级联persist操作,新实体实例将同时成为托管实例和持久实例。应用于实体X的持久化操作的语义如下:。。。 是否可以在不显式调用persist()方法的情况下调用persist操作,或者persist操作始终必须是通过调用persist()的触发器? 假设我有两个实体A和B,其中A与B有一个域(cascade=P