“低耦合”给软件项目带来的优点是:易于变更、易于重用。 “高内聚”给软件项目带来的优点是:可读性强、易维护和变更、支持低耦合、移植和重用性强。 强内聚和弱耦合是相辅相成的,一个良好的设计是由若干个强内聚模块以弱耦合的方式组装起来的
必须配置:
mapping resource="com/test/entity/Product.hbm.xml"/> <!-- 有几个实体类就要,有几个映射文件,就要有几个mapping -->可选配置:
<property name="hibernate.show_sql">true</property><!-- sql语句输出到控制台 --> <property name="hibernate.hbm2ddl.auto">update</property><!-- 如果没有表自动建立表。如果没有类创建类 -->项目目录结构说明
Hibernate配置文件最好放在src目录下
Hibernate API操作流程
加载Hibernate核心配置文件,创建Configuration对象; Configuration cfg=new Configuration().configure().创建SessionFactory对象,该对象创建耗费资源,创建一次即可; SessionFactory factory=cfg.buildSessionFactory();创建Session对象; Session session=factory.openSessin();开启事务; Transaction tran=session.beginTransaction();执行增删改查操作; save()、update()、delete()、get()/load()提交事务 tran.commit();关闭事务/关闭session/关闭sessionFactory close();增删改之后要提交事务: Transaction tran = null; tran.commit();
Java程序中区分不同对象。 Java语言中通过内存地址区分不同对象; 两种比较引用变量方法; 1."==" 比较两个变量引用的内存地址是否相同; 2.equals 比较两个变量引用的对象的值是否相同。 用户自定义的类也可以覆盖Object的equals方法实现对象按值进行比较。
映射文件中OID的配置 <generator>子元素用来指定OID的生成器
标识符生成器 Hibernate 自带了很多种标识符生成器: increment 采用 Hibernate 数值递增的方式; identity 采用数据库提供的自增长方式; assigned 主键由应用逻辑产生; sequence 采用数据库提供的序列方式; hilo 通过hi/lo算法 // Hibernate 5.0 以后不支持; seqhilo 通过hi/lo算法; native 自动选择合适的标识符生成器; uuid.hex 通过uuid算法。
increment标识符适用范围 increment 标识符:该机制是 Hibernate 以递增的方式为OID赋值。 不依赖于底层数据库系统,适合所有数据库; 适合单独的 Hibernate 应用使用,不适合在集群情况下使用。
identity标识符适用范围 identity 标识符:该机制依赖于底层数据库,需要数据库支持自动增长字段。(底层数据库不管删没删除,如删除id=7 ,如果重新添加一个字段这时id=8) 例如:MySQL、MSSQL、DB2、Sybase等。
assigned 标识符适用范围 assigned 标识符:该机制是由外部程序负责生成 OID, Hibernate 不负责维护主键生成,与Hibernate和底层数据库都无关。(简单的理解为:要手动设置id) 例如: Student 类没有定义 ID,而是以学号 studentNo 作为业务主键
**cascade级联操作属性:**save-update(保存)、delete(删除)、all(保存和删除)、none(不执行级联操作)。
<!-- inverse属性:谁维护关联关系,或者说维护外键,又或者是是否放弃维护权,flase:当前方维护权利,true:由对方维护 -->many-to-one不提供inverse属性
外键由多方维护
