Hibernate配置文件
添加环境
1.Jar包
2.配置文件hibernate.cfg.xml/xxx.hbm.xml
3.使用hibernate实现增删改查
Configuration cfg = new configuration.config();
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.openSession();
Try{
Transaction tx = session.beginTransaction().commit();
}catch(Exception e)
{
Tx.rollback();
}finally{
Session.close();
}
4.方法:save(object) / update(object) / delete(Object) / createQuery(hql) ./ get(class,id)
5.主配置文件:
数据库信息:方言、URL、驱动、用户名、密码
导入映射文件
其他的配置show_sql = true; hbm2ddl.auto = update;
6.映射配置
映射基础:无参的构造方法,get和set方法
映射普通属性name ,type, length , column ,not-null
映射的主键native,assigned,uuid,hilo等等
1 hibernate.cfg.xml
该文件配置了Hibernate需要的数据库的url以及账号和密码等等的信息
例如:
com.
mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernate
root
mysql
org.hibernate.dialect.MySQLDialect
1
true
2 配置文件:User.hbm.xml
该文件负责对User进行映射的文件,配置了user的一些属性值和数据库中对应的属性以及相应的设置信息,如类型,是否为空。
Name属性:对象中的属性名,这个必须要有的
Type属性:类型属性,如果不写的话Hibernate会自动的检测其类型
Column属性:对应着数据库当中的某一列。
Length属性:长度。
Not-null属性:非空属性。
如果说你现在设置好了User.hbm.xml这个文件,但是数据库当中没有该数据库,那么由这个配置文件Hibernate会自动的帮你在数据库当中生成该表。
注意:type的值如果大写的话可以这样java.lang.String(java中类型),小写的话string(Hibernate类型)即可。
图像,byte[] 的形式
在配置文件中类型对应着binary类型,最好是指定长度值。
主键:如果是int的话最好是设置为Integer类型,初始值int类型为0,而Integer则为null
3 主键生成策略:
Native 根据数据的性质自动的选择用那个生成策略。
Assigned 手动的指定它的值。使用UUID.randomUUID().toString();手动配置可保证唯一性。
Identity 使用数据库的自己的主键生成策略,但是oracle不支持。
Sequence oracle中使用这个,也可以db2等等数据库
Hilo 高低位算法来生成主键,只需要一张额外的表,所以的数据库都支持。
Increment 查询最大的id值然后加1增长,Hibernate帮助增长的,不推荐使用,多线程的情况下会有问题的。
Uuid 设定其主键生成策略为uuid即可实现与assigned中使用UUID.randomUUID().toString();的效果。
4 集合类型的数据的存储
Set 无序 不重复
List 有序 可重复
Map 无序 不重复
有序的集合无法配置使其排序,但是无序的集合可以通过配置的方式使其排序但是排序一般不会用到。
比如购物网站用户地址信息
Set集合 非常重要会经常用到
设置有序无序unsorted|natural|comparatorClass默认的方式是unsorted
需要设置的属性是sort属性
order-by属性order-by = “address DESC/ASC(默认是ASC)”
List集合
List集合是有顺序的所以在映射的时候需要配置这样几个属性:userid, address,idx(索引表示它的顺序)
这样设计它的映射文件中应该写为:
数组
Arrays.toString(“”);可查看数组的元素
Map集合
Hibernate特有的集合 Bag 无序,可重复
5:set集合顺序问题 HashSet 无序的 TreeSet 有序,放入数据之后里面的数据是排好了顺序的 LinkedHashSet 有序的,按照放入的数据的顺序存放的 6:一对多的关系 外键在多的那一方中 例如员工部门的关系 package cn.itcast.f_hbm_oneToMany; import java.util.HashSet; import java.util.Set; /** * 部门 * * @author tyg * */ public class Department { private Integer id; private String name; private Set
employees = new HashSet
(); // 关联的很多员工 @Override public String toString() { return "[Department: id=" + id + ", name=" + name + "]"; } }
================================================================ package cn.itcast.f_hbm_oneToMany; /** * 员工 * * @author tyg * */ public class Employee { private Integer id; private String name; private Department department; // 关联的部门对象 @Override public String toString() { return "[Employee: id=" + id + ", name=" + name + "]"; } }
测试 package cn.itcast.f_hbm_oneToMany; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configur