数据库框架:Hibernate Mybatis
一位远方的诗人
天赋被努力完美释放!
展开
-
ssh框架配置文件的作用
(一)web.xml 是web工程必须的,项目启动时首先加载web.xml文件,读取配置相关信息。按照文件里面配置的监听器,过滤器, servlet, 第三方框架等来加载相应的配置。(二)spring的配置文件(application-context.xml),关于bean的注入,以及事物管理等信息,Spring配置文件 可以单独管理 hibernate,或者 同时管理hibernat原创 2017-06-18 22:27:26 · 567 阅读 · 0 评论 -
Hibernate之对象之间的关联操作(cascade与fetch)
(一)cascade属性:表示对象之间的级联操作。即在进行某种操作时,关联对象是绑定在一起的。(该属性时可选的,只是方便编程而已)参数值:以枚举形式存放,各属性值用逗号隔开。CascadeType.ALL CascadeType.Persist CascadeType.Merge CascadeType.Remove CascadeType.Refresh 等实例原创 2017-08-31 10:36:09 · 505 阅读 · 0 评论 -
Hibernate之关联关系的CRUD
(一)要进行删除或者更新,需要先load(知道具体的ID除外)。@Testpublic void testDeleteGroup() {testSaveGroup();Session s = sessionFactory.getCurrentSession();s.beginTransaction();//User u = (User)s.load(User.cla原创 2017-08-31 15:12:24 · 203 阅读 · 0 评论 -
Hibernate之树状结构设计
(一)在系统中,经常会用到无限级递归的树形结构,比如菜单、组织机构管理、多级分类等等,一般是在同一个表中定义父子关系实现这种树形结构。(二)对于父类来说,它与子类的关系是一对多;对于子类来说,它与父类的关系是多对一。由于父类和子类都存在对方的对象引用,因此它们之间的关系是一对多,多对一之间的双向关联。因此需要设置mappedby,以及测试代码中的父类与子类、子类与父类之间的关系都要设置好。原创 2017-09-18 11:35:33 · 1095 阅读 · 0 评论 -
Hibernate使用注解时的注意问题与mysql的中文乱码问题
(一)Hibernate注解的实现是使用的JPA标准,是导入import javax.persistence类库的,而不是hibernate的(二)表名不一致:可以采用@Table(name=“数据库中的表名”)(三)字段名不一致:在属性的getter方法上加@Column(name=“数据库中字段的名字”)(四)不想让属性存储到数据库,可以在属性的getter方法加上@Transie原创 2017-08-28 14:54:11 · 593 阅读 · 0 评论 -
Hibernate查询(HQL)
(一)O/R Mapping编程模型1、映射模型a、jpa annotationb、hibernate annotation extensionc、hibernate xmld、jpa xml2、编程接口(在使用编程接口时,要区分好jpa和hibernate)a、jpab、hibernate3、查询语言a、Native Sql:本地查询语言,即o原创 2017-09-13 14:16:07 · 373 阅读 · 0 评论 -
HQL详细用法
(一)HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询在涵盖Criteria查询的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封转载 2017-09-18 15:20:15 · 939 阅读 · 0 评论 -
Hibernate之缓存
(1)缓存算法:主要是指当缓存空间满了,需要将缓存中哪个对象替换掉。(LRU:Least Recently Used ,LFU:Least Frequently Used,FIFO)1、基于访问时间:此类算法按各缓存项的被访问时间来组织缓存队列,决定替换对象。如LRU。2、基于访问频率:此类算法用缓存项的被访问频率来组织缓存。如LFU、LRU-2、2Q、LIRS。3、访问时原创 2017-09-01 13:39:42 · 177 阅读 · 0 评论 -
Hibernate之HibernateTemplate的封装以及匿名内部类的使用
(一)HibernateTemplate的封装采用的是模板方法(Template Method)的设计模式。通过学习Hibernate,我们可以知道在事务开始之前和事务提交之后的代码是很固定的,我们可以对其进行封装,只有事务中间的部分有我们自己填写,来简化重复的代码。实例:public class MyHibernateTemplate {public void executeW原创 2017-09-09 10:40:02 · 578 阅读 · 0 评论 -
Hibernate之核心开发接口与对象的三种状态
(1)Configuration(类):对配置信息进行管理,用来产生SessionFactory;他的继承类有:AnnotationConfiguration用来加载默认的配置文件(hibernate.cfg.xml),如果把配置文件改为:hibernate.xml,可以用他的configure()方法进行加载例如:Configuration configuration = new Co原创 2017-08-29 15:48:16 · 291 阅读 · 0 评论 -
Hibernate之一对一外键关联
(一)关系映射:是指对象之间的数量关系映射,并不是指数据库的关系。对于关系映射,需要思考数据库的表该如何映射。(二)一对一单双向外键关联基于注解的方式@Entitypublic class Customer implements Serializable { @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name="原创 2017-08-30 11:52:13 · 669 阅读 · 0 评论 -
hibernate之ID生成策略
(一)ID生成策略基于xml的配置在Student.hbm.xml中配置<id name="propertyName" type="typename" column原创 2017-08-28 16:16:53 · 457 阅读 · 0 评论 -
java有没有内存泄漏与N+1问题
(一)java有没有内存泄漏 在语法上java没有内存泄漏,因为有垃圾收集器。但是在编程的时候,则会引起内存泄漏。比如:写程序时用到了一些资源一定要回收(关闭),就像打开连接池,一定要关闭,否则就在内存中一直打开。打开文件要关闭,不关闭的话,java无法调用本地的资源文件将其关闭。打开文件相当于java调用c,c调用windows的api,c语言需要手动回收内存。同时注意se原创 2017-09-17 21:22:02 · 345 阅读 · 0 评论 -
Hibernate之Session的方法get()与load()的区别
(一)Session:管理一个数据库的任务单元(二)get()与load()的区别:1、不存在对应记录时表现不一样,get()会直接报错,load()不会直接报错,只有在真正使用到对象的时候才会报错2、load()返回的是代理对象,等到真正用到对象的内容时才会发出sql语句3、get()直接从数据库加载,不会延迟。 @Testpublic void testL原创 2017-08-29 18:11:55 · 294 阅读 · 0 评论 -
Hibernate之多对多双向关联(比较少用)
(一)基于注解的配置方式:(通过雇主和雇员来解释多对多双向关联)通过@ManyToMany注解可定义的多对多关联. 同时,你也需要通过注解@JoinTable描述关联表和关联条件. 如果是双向关联,其中一段必须定义为owner,另一端必须定义为inverse(在对关联表进行更新操作时这一端将被忽略):@Entitypublic class Employer implements原创 2017-08-31 09:12:47 · 204 阅读 · 0 评论 -
Spring之AOP声明式事务管理(采用xml的配置方式更好)
(一)基于xml的AOP声明式事务管理的配置方式xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop原创 2017-09-07 22:19:03 · 385 阅读 · 0 评论 -
Hibernate之事务(transaction)
(一)事务(transaction):一组命令,要么都执行,要么都不执行。(二)事务的特性:ACID Atomicity:原子性 Consistency:一致性 Isolation:隔离性 Durability:持久性(三)事务并发时可能出现的问题:1、dirty read (脏读):一个事务可能会读取另一个事务没有提交的更新数据。2、unrepeated原创 2017-09-01 18:43:45 · 600 阅读 · 0 评论 -
模拟Hibernate实现
package test;import java.lang.reflect.Method;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.util.HashMap;import java.util.Map;原创 2017-08-25 14:58:31 · 175 阅读 · 0 评论 -
Hibernate添加log4j的实现
(一)软件目录中的etc是指:"Editable text configuration":“可编辑的文本配置文件”(二)Hibernate中log4j的配置文件在project文件夹中的etc文件夹中log4j.properties(三)导入log4j的jar包,同时还要导入slf4j的log4j的转换接口的jar包具体的输出配置可以在log4j.properties中进行配置。原创 2017-08-28 09:37:41 · 469 阅读 · 1 评论 -
Junit的使用
(一)导入junit的jar包(二)建立Source folder 文件夹test:用于存放测试代码(三)编写测试类即可,直接在main方法里测试,也可以采用注解的方法:实例:public class TeacherTestm {private static SessionFactory sf=null;@BeforeClasspublic static void be原创 2017-08-28 10:55:55 · 184 阅读 · 0 评论 -
Hibernate的用法基于xml方式
(一)Hibernate的配置文件(hibernate.cfg.xml):可以在Hibernate的说明文档中找到具体的使用方法: "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0原创 2017-08-25 09:17:13 · 454 阅读 · 0 评论 -
sql语句中where 1=1 的用法
(一)where 1=1的用法在写项目中需要建立一个动态的sql,这时可以使用where 1=1.实例: String sql=”select name,age from usertable where”;//这里我们没有加where 1=1 if(!"".equals(user.getName())&&user.getName()!=null){ //这是表示原创 2017-09-14 14:13:23 · 5132 阅读 · 1 评论 -
Hibernate之ID生成策略—联合主键
(一)使用XML配置文件的方式将联合主键单独写到一个类中该类必须实现java.io.Serializable接口,重写equals()方法和hashCode()方法package com.sdga.hibernate;public class StudentPK implements java.io.Serializable{private int id;private原创 2017-08-29 11:51:59 · 314 阅读 · 0 评论 -
Hibernate之组件映射(embedded component)
(一)在实体中可以定义一个嵌入式组件(embedded component), 甚至覆盖该实体中原有的列映射.组件类必须在类一级定义@Embeddable注解. 在特定的实体的关联属性上使用@Embedded和 @AttributeOverride注解可以覆盖该属性对应的嵌入式对象的列映射:@Entitypublic class Person implements Seria原创 2017-08-30 13:51:02 · 474 阅读 · 0 评论 -
Hibernate之多对一单向映射(ManyToOne)
(一)多对一单向映射基于注解的方式(在多方加外键,如果在一方加的话,会造成冗余)在实体属性一级使用@ManyToOne注解来定义多对一关联:@Entity()public class Flight implements Serializable { @ManyToOne @JoinColumn(name="COMP_ID")//可以指定外键的名字即在数据库表中字段的名原创 2017-08-30 14:57:44 · 445 阅读 · 0 评论 -
Hibernate之一对多单向外键关联(OneToMany)
(一)实例:一个用户对应多个组,一个组对应一个用户(在多方加注解,不会产生冗余)通过联接表处理单向一对多关联是首选方式.这种关联通过@JoinTable注解来进行描述.@Entitypublic class Trainer { private Set trainedMonkeys = new HashSet(); @OneToMany @JoinTabl原创 2017-08-30 15:21:08 · 1738 阅读 · 0 评论 -
Hibernate之一对多双向外键关联
(一)基于注解的配置方式:双向(Bidirectional)(多方为主体端)在EJB3规范中多对一这端几乎总是双向关联中的主体(owner)端, 而一对多这端的关联注解为@OneToMany( mappedBy=... )@Entitypublic class Troop { @OneToMany(mappedBy="troop") public Set ge原创 2017-08-30 16:11:30 · 326 阅读 · 0 评论 -
Hibernate之多对多单向关联(ManyToMany)
(一)基于注解的配置方式:关联表名:主表表名+_下划线+从表表名, 关联到主表的外键名:主表名+_下划线+主表中的主键列名. 关联到从表的外键名:主表中用于关联的属性名+_下划线+从表的主键列名. 以上规则对于双向一对多关联同样有效.@Entitypublic class Store { @ManyToMany public Set getImplantedIn(原创 2017-08-30 18:00:45 · 684 阅读 · 0 评论 -
框架是为解决问题而诞生的,从底层了解学习
现在许许多多的初学者和程序员,都在趋之若鹜地学习Web开发的宝典级框架:Struts2,Spring,Hibernate。似乎这些框架成为了一个人是否精通Java,是否会写J2EE程序的唯一事实标准和找工作的必备基础。 然而,如果在面试的时候问这些程序员,你们为什么要学习这些框架?这些框架的本质到底是什么?似乎很少很少有人能够给我非常满意的答复。因为他们都在为了学习而学习,为了工作而学习,转载 2017-06-18 15:13:07 · 1064 阅读 · 0 评论