hibernate
hyperprice
做个架构师
展开
-
Configuration解释
Configuration cfg = new Configuration().configure(); Configuration new完后 如果不加.configure的话 它默认找的是hibernate.properties的配置文件 加上这个的话 它找的是 hibernate.cfg.xml配置文件 Configuration 是加载系统配置文件的一个方法...2009-06-28 15:36:00 · 166 阅读 · 0 评论 -
一级缓存
hibernate、一级缓存: * 一级缓存很短和session的生命周期一致,一级缓存也叫session级的缓存或事务级缓存; * 一级缓存无法取消,但可以管理,可以使用session.clear(),session.evict(); 清除 和 驱逐; 那些方法支持一级缓存: * get() * load() * iterate(查询实体对象) 如何管理一...2009-06-28 15:41:29 · 83 阅读 · 0 评论 -
二级缓存
hibernate 二级缓存; * 二级缓存 sessionFactory级的缓存 session之间可以共享(可插拔) * 二级缓存的环境搭配如下: 1、拷贝hibernate包内etc文件夹内的\ehcache.xml目录(在src下加入ehcache.xml) 删除不必要的内容 只留下 //溢出后存放的目录例如: 2、在hiber...2009-06-28 15:41:45 · 60 阅读 · 0 评论 -
查询缓存
hibernate查询缓存 查询缓存是针对普通属性结果集的缓存 对实体对象的结果集只缓存id 查询缓存的生命周期,当前关联的表发生修改,那么查询缓存生命周期结束 * 环境配置方法如下: * 1、在hibernate.cfg.xml中添加一条属性信息,如: true * 2、在程序中必须手动启用查询缓存,如: query.setCacheable(t...2009-06-28 15:42:03 · 100 阅读 · 0 评论 -
悲观锁
理解:当两个用户同时对数据进行操作时这个数据会被先访问的线程锁定,次线程会等待。直到主线程结束后次线程才能做访问或修改。 实现方法:LockMode.UPGRADE 例子代码: Session session = HibernateSessionFactory.getSession(); session.beginTransaction(); Lock l...2009-06-28 15:42:25 · 75 阅读 · 0 评论 -
乐观锁
理解:用户可以做查询等操作,但修改数据时需要验证version版本号,如果版本号错误则会抛出异常(只有在2个或多个线程同时做操作时才会做验证version,单线程修改不会验证version只会增加version。) 实现方法:在数据库中(或类对象中)创建version(为int类型),然后在映射(hbm)文件中增加 optimistic-lock="version" 属性。 然...2009-06-28 15:42:40 · 124 阅读 · 0 评论 -
多对一(Many2One)
第一种方式: 先创建模型 再生成数据库的方法; 1、创建模型类,如用户类(User) 和 组类(Group),创建类中拥有的变量,并生成get和set方法。 manytoone:在多的一端创建一的一端的引用,例如在User中创建private Group group; 2、配置*.hbm.xml Group的映射中只需要配置对应字段即可,另外需要重命名下,因为group...2009-06-28 15:43:22 · 281 阅读 · 0 评论 -
一对多(One2Many)
一对多(one2many)实现的方法为: * 1、发现对象、创建实体类。例如:班级(classes)和学生(Student),班级中的属性有int id,String name(多对一的关系,多个学生对应一个班级,后期的实现 为 先创建学生,然后班级添加学生即可,班级要定义个Set接口的变量(因为Set是不重复的)例如,private Set student;) * 2...2009-06-28 15:44:00 · 196 阅读 · 0 评论 -
Log4j课堂
日志级别 off:是最高的级别,用于关闭所有日志记录 fatal:指输出每个严重错误事件将会导致应用程序的退出。 error:指出虽然发生错误事件,但仍不影响系统的继续运行。 warn:表明会出现潜在的错误的情形。 info:一般用在粗粒度级别上,强调应用程序的运行过程。 debug:一般用在细粒度分析上,对调试程序非常有帮助。 all:是最低级的,用于打...2009-06-28 15:44:38 · 63 阅读 · 0 评论 -
Log4j入门
以前在做一些小的项目的时候都是用System.out.println();来输出信息进行调试。 简单理解,log4j 就是采用更规范的管理方式来输出你想要的信息,你可以自己设置输出格式,输出目的地,以及输出级别等等。 头一次尝试,留个脚印- - 首先要将 log4j-1.2.8.jar & commons-logging.jar 导入web工程 一、定义配置文件 两种...2009-06-28 15:44:57 · 80 阅读 · 0 评论 -
创建映射和DBbean的方法
在建立好的数据库映射中(database 视图中) 选择想要生成的表 点右键 选 hibernate r那个 -- folder 选 browse 选择对应的项目 package选择包 可以手动输入 推荐使用pojo(源数据) 第一个选择区域是 创建pojo源数据 和 映射 并更新到hibernate.cfg.xml中建立mapping 第二个区域是是否创建DBbean 然...2009-06-28 15:41:06 · 244 阅读 · 0 评论 -
创建用户库的方法
创建库可以把繁多的jar包和链接驱动包放在lib库内 当需要的时候直接引用即可; 创建的方法如下: 窗口-首选项-java-构建路径-用户库-然后新建 名字自定 下面的勾不用勾 然后 添加需要的jar包和驱动包 添加完成后点确定即可 在需要引入的项目上点右键 属性 -- java构建路径--库--添加库--用户库---选择对应建立的即可 关于经常出现的pojo问题 ...2009-06-28 15:40:40 · 204 阅读 · 0 评论 -
创建database视图
创建database视图(建立hibernate.cfg.xml做铺垫) 窗口 显示视图 Myeclipse Database DBbrowser 右键 新建 选择 需要建立的数据库 如果是mysql的话就选mysql 如果是 sqlserver的话就选对应的即可 driver name 是显示的名称 url 为连接串 其它的对应输入即可 创建好以后 连接上 mysql中的数据...2009-06-28 15:40:18 · 150 阅读 · 0 评论 -
get和load的区别
使用load加载对象的时候,如果数据库中没有此对象则会抛出异常。 get则不会。 因为load支持延迟加载,get不支持延迟加载(lazy); get加载对象时如果数据库中没有此对象则会提示null;...2009-06-28 15:36:26 · 66 阅读 · 0 评论 -
QBC\QBE\QID\HQL等
1: QBE (Query By Example) Criteria cri = session.createCriteria(Student.class); cri.add(Example.create(s)); //s是一个Student对象 list cri.list(); 实质:创建一个模版,比如我有一个表serial有一个 giftortoy字段,我设置serial.se...2009-06-28 15:37:12 · 142 阅读 · 0 评论 -
hibernate的优点和正确的开发模式
hibernate 优点 1.提高生产力 (不用再写枯燥的jdbc语句) 2.开发更对象化 (直接操作对象.save即可) 3.移植性(关键在方言的配置(适配器的配置)) 4.支持透明持久化 正确的开发方式 1.先建立对象模型(领域模型-是这个领域中的) 在建立映射关系 根据映射关系导出相应的表--开发应用即可 从对象的角度来考虑 2.另一种是先考虑数据库表,...2009-06-28 15:37:42 · 86 阅读 · 0 评论 -
hibernate的核心接口
hibernate有5个核心接口,分别是: session、sessionfactory、transaction、query、configuration;2009-06-28 15:38:08 · 64 阅读 · 0 评论 -
hibernate基本映射
hibernate基本映射 实体类---表 实体类中的普通属性---表字段 采用标签映射成数据库表,通过标签将普通属性映射成表字段 所谓普通属性指不包括自定义类、集合和数组等 注意:如果实体类和实体类中的属性和sql中的关键字重复,必须采用table或column重新命名 实体类的设计原则: * 实现一个默认的(即无参数的)构造方法(constructor) *...2009-06-28 15:38:25 · 74 阅读 · 0 评论 -
hibernate配置
1.导入jar包 2.配置hibernate.cfg.xml(拷贝到src下) 配置驱动信息 com.mysql.jdbc.Driver jdbc:mysql://localhost/ibs?useUnicode=true&characterEncoding=GBK root true org.hibernate.dialect.MyS...2009-06-28 15:38:52 · 53 阅读 · 0 评论 -
SessionFactory
SessionFactory 是和数据库绑定的,一个数据库对应一个sessionfactory 数据库中的映射都放在sessionfactory中 sessionfactory 和 二级缓存相关 二级缓存是进程级的缓存 相当于web开发中的 application sessionfactory 称为重量级对象(创建比较耗时间,所以称为重量级对象,一般sessionfactory最好...2009-06-28 15:39:16 · 84 阅读 · 0 评论 -
session_flush
hibernate:session_flush; session flush测试: session flush方法主要做了两件事: * 清理缓存 * 执行sql session在什么情况下执行flush * 默认在事务提交时 * 显示的调用flush * 在执行查询前,如:iterate hibernate按照save(in...2009-06-28 15:39:36 · 101 阅读 · 0 评论 -
测试实体对象的生命周期
测试实体对象的生命周期 junit简介: * 编写测试类xxxTest,需要继承TestCase * 编写单元测试方法,测试方法必须以test开头,测试方法不能含有参数和返回值,如: public void testHello1() {} * 最好单元测试的代码单独建立一个目录 了解Hibernate中CRUD操作 了解get和load的区别? * ge...2009-06-28 15:40:01 · 86 阅读 · 0 评论 -
个人对ibatis的理解
个人对ibatis的理解; * SqlMapClient的实例是线程安全的,因此仅需要一个实例即可,这里使用了一个静态单例模式 * 和hibernate一样 需要创建映射表文件; * 定义字段 生成 get set方法; * 不过sql语句是写在映射文件中的; * 创建模型文件时需要生成构造函数,无参的和全参的(除id) ...2009-06-28 15:45:56 · 77 阅读 · 0 评论