Hibernate3
林浩-豪享码
这个作者很懒,什么都没留下…
展开
-
Hibernate - 二级缓存
第一步:ehcache.xml中部分配置信息://当缓存满了,存放到硬盘的临时位置,path只硬盘路径<diskStore path="java.io.tmpdir"/>//缓存以对象为单位,最多存放10000个maxElementsInMemory="10000"eternal="false"//2分钟内没人访问,就会从缓存中清除掉timeToIdleSeconds="120"timeToLiveSeconds="120"//true表示缓存满了,保存到硬盘overf.原创 2020-06-11 11:54:31 · 166 阅读 · 0 评论 -
Hibernate - session一级缓存
看下面例子,就很快明白了连续查询两次public void testLoad(){ Session session =null; try{ session = HibernateUtil.getSession(); session.beginTransaction(); Student s = (Student)session.load(Student.class, 1); System.out.println("1.student Name:"+s.getNa原创 2020-06-11 10:35:02 · 115 阅读 · 0 评论 -
Hibernate-查询机制
只查询部分字段,比如列出姓名跟年龄叫投影update、delete、insert不支持缓存的,所以一般情况下不要用原创 2020-06-11 10:00:07 · 145 阅读 · 0 评论 -
Hibernate-多对多ManyToMany
例子:学生与课程之间多对多关系如果想要知道学生选了哪些课,需要在学生类配置ManyToMany,如果想要知道该课程有哪些学生,需要在课程类配置ManyToMany如果以上两种都需要,则在两边都得配置ManyToMany无论哪一种配置,表结构都一样(都有中间表自动生成),只是表之间关系在对表操作时有限制(比如只在学生类配置了ManyToMany,则无法通过课程查询学生),表结构如下:单边配置ManyToMany,如下:Student.javapublic class原创 2020-06-10 15:17:11 · 398 阅读 · 0 评论 -
Hibernate-一对多OneToMany
例子:一个班级对应多个学生一对多:一的一方用se接口集合,不能用HashSet,因为Hibernate有自己的set实现。set与list区别:set无序,set不重复班级表:public class Clazz { private int id; private String name; private Set<Student> students; //get、set省略 } Clazz.hbm.xml学生表:p原创 2020-06-10 11:14:51 · 885 阅读 · 0 评论 -
Hibernate - 多对一、级联
例子:学生与班级是多对一关系Student.javapublic class Student { private int id; private String name; private double score; private Clazz clazz; //get、set省略} Student.hbm.xml<hibernate-mapping> <class name="entity.Student"> <id n.原创 2020-06-09 11:23:06 · 162 阅读 · 0 评论 -
Hibernate-增删改查项目中的使用及注意点
本来在main测试中,需要用到SchemaExport才能建表,项目中只要在配置中添加hbm2ddl.auto属性,自动会建表public static void main(String[] args) { //读取配置文件:如果直接创建读取文件,没有再点configure()方法,读取的是hibernate2.0的配置文件 Configuration cfg = new Configuration().configure(); //建表:(Schema:方案),将配置文件输出 .原创 2020-06-09 10:18:05 · 180 阅读 · 0 评论 -
Hibernate - get与load方法
先看下load方法的执行结果结果:执行91行时输出Hibernate语句以及类名get与load区别:get:不支持延迟加载,执行get方法时,就去数据库查询返回的是Student类型如果查询对象不存在会返回null,这样很难查询错误原因,后面很可能会报空指针异常。load:延迟加载(懒加载),只有要到了才会去数据库查询,节省开销,Hibernate建议用load执行load语句返回的不是Student类型,而是Student的一个子类,他是一个代理对象,EnhancerBy.原创 2020-06-09 08:36:00 · 118 阅读 · 0 评论 -
Hibernate - 持久化对象的生命周期:Hibernate对象下的三种状态
由于构造SessionFactionry很消耗资源,整个应用只创建一个会话工厂,但打开数据库连接Session会话是多次的,所以可以写个工具类。工具类:import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtil { private static SessionFactory factory;原创 2020-06-08 12:07:07 · 181 阅读 · 0 评论 -
Hibernate -主键映射
public class Student { private String id; private String name; private double score; //get、set省略 }数据库:主键16个字符,16位,128个字节uuid具体生成策略:原创 2020-06-08 11:01:47 · 116 阅读 · 0 评论 -
Hibernate -基本映射
MySQL数据库:原创 2020-06-08 10:17:35 · 104 阅读 · 0 评论 -
Hibernate - ORM框架
ORM(Object/Relation Mapping):Object指java对象,Relation指关系数据库,Hibernate是一个ORM框架,将java类映射到数据库,类映射为表,成员变量映射成表字段,变量类型就是字段类型的对应关系。jdbc中,Java用的是面向对象模型,数据库用的是关系数据库模型。添加、修改数据时需要根据sql语句字段分别对应添加,是对象到关系的映射。查询时将每个列的内容提取出来,转换到对象的每个属性的,是关系到对象的映射。而现在Hibernate根据类的xml配置文..原创 2020-06-08 09:49:49 · 250 阅读 · 0 评论 -
Hibernate-增删改查
以下基于Hibernate基本测试的Student类,采用JUnit3测试增加import java.util.ArrayList;import java.util.List;import junit.framework.TestCase;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import entity.Student原创 2020-06-08 07:41:04 · 297 阅读 · 0 评论 -
Hibernate-基本配置、自动建表
Hibernate是ORM框架导包:MySQL数据库链接包、hibernate3、hibernate框架项目框架其中:log4j: log for java 针对java的日志------hibernate会在控制台输出一些日志,所以需要配置日志属性,按照日志属性输出信息Studentpublic class Student { private int id; private String name; private double score;// get、set方法省略}St原创 2020-06-07 23:15:28 · 408 阅读 · 0 评论