五:Hibernate主键(ID)的生成策略 (重点掌握AUTO)
使用xml的配置:<id name="" ><generator name="native"/></id>
常用的四个:native,identity,sequence,uuid
使用注解的配置:@GeneratedValue
1)自定义ID 使用@Id
2)AUTO
方法1:@Id @GeneratedValue
方法2:@Id @GeneratedValue(strategy=GenerationType.AUTO)
使用java的数据类型和数据库的数据类型对应值自动生成数据库表中的主键
一般默认,对MYSQL,使用auto_increment,对oracle使用了hibernate_sequence(名称固定)
3)IDENTITY
@GeneratedValue(strategy=GenerationType.IDENTITY) mysql,sqlserver
4)SEQUENCE (@Sequencegenerator)
@SequenceGenerator(
name="SEQ_SHOPCONFIG", //此Sequence Generator的名称
sequenceName="SEQ_DB_SHOP_CONFIG" //存储到数据库的SEQUENCE的名称 使用于oracle
)
@GeneratedValue(strategy=GenerationType.SEQUENCE) oracle
javax.persistence.sequencegenerator
@SequenceGenerator(name="生成器名称",sequenceName="生成器数据库名称")
在get方法上面使用@GeneratorValue(stragegy=GeneraterType.SEQUENCE,name="生成器名称")
5)TABLE (@TableGenerator)
@TableGenerator(
name="TBL_SHOPCONFIG",
table="GENERATOR_TABLE",
pkColumnName = "key",
valueColumnName = "value",
pkColumnValue="SHOPCONFIG",
allocationSize=1
)
@Entity
@Table(name="shop_config")
@Id @GeneratedValue(strategy=GenerationType.TABLE,generator="TBL_SHOPCONFIG") oracle
6)联合主键(两个字段作为主键)理解掌握
a)xml: <composite-id></composite-id>
联合主键需要新建一个需要实现联合主键的类在本类中实现序列化和重写equals,hashCode保证唯一性。
问题:为什么要使用序列化
答:数据的同步。
b)annotation:
见源代码
六:核心开发接口(重点)
学习要有有的放矢
掌握核心开发接口必须要掌握三种对象状态,反之亦然
1)Configuration
2)SessionFactory
面试中:hibernate 的openSession和getCurrentSession的区别
答:openSession()建立的session永远都是不同的session。
使用getCurrentSession() 在上下文中找,如果有则使用,没有则建立 (还未关闭session,则当前session和其他的未关闭的session都是一样的)。
getCurrentSession()的用途:是使用界定事物边界。什么是界定事物边界。
openSession()使用完成之后需要close(),getCurrentSession()事物提交字段close
切记:面试会问到:openSession()永远是打开新的session。getCurrentSession()如果当前环境有session则拿当前环境的session,否则创建新session.
什么是上下文 即是:current_session_context_class(jta thread)
什么叫分布式就是分布在多台不同的数据库服务器上
事物分为两种:一种是依赖数据库本身的。二种是分布式
JTA:JAVA TRANSACTION API
Session (动手实践,实际开发使用)
编程开发接口:save,delete,get,load,update,saveOrUpdate,clear,flush,schemaExport
get和load的区别:(重点)
1:不存在对应记录是表现不一样
2:load返回的是代理对象,等到真正用到对象的内容时才发出SQL语句。
3:get直接从数据库加载,不会延迟
clear方法:1:无论是load,get,都是首先查找缓存(一级缓存),如果没有,才会去数据库查找,调用clear()方法可以强制清除session缓存。
flush方法:可以强制进行从内存到数据库的同步。
务必理解:动态代理模式(核心基础知识为:泛型,反射)
七:三种对象状态
三种状态的理解,务必理解。
分享到:
相关推荐
在本文中,我们将深入探讨如何将Spring Boot框架与Hibernate ORM集成,特别是在不使用JPA(Java ...在chapter12-hibernate目录中,可能包含了更多关于这个主题的示例代码和详细说明,供读者进一步学习和参考。
**hibernate目录** 这里可能包含Hibernate框架的所有必需jar包,包括核心库、JPA支持、SQL解析器和其他相关模块。 **spring目录** 这个目录下应该有Spring框架的核心库和其他相关模块,如Spring ORM支持、Spring ...
Hibernate官网提供了所需的基础Jar包,位于框架解压目录的lib目录下。这些包括必需的Jar包、可选的Jar包以及一些辅助Jar包。例如,Hibernate实体管理器库、日志库、JUnit测试库和数据库驱动程序等都是进行Hibernate...
这个目录可能包含了Hibernate Tools的特性描述文件,这些文件定义了工具包提供的各项服务和功能。在Eclipse插件系统中,features文件通常包含了插件的元数据,如插件的依赖、提供的功能等。 三、`plugins`目录详解...
如果遇到错误,例如配置错误导致browse无法选择正确的项目目录,可能需要手动修改`.project`文件的natures部分,确保包含Hibernate的nature。 总的来说,Hibernate是Java开发中的重要工具,它通过ORM解决了数据库...
通常情况下,Hibernate 的 jar 文件位于 Hibernate 根目录下的 lib 文件夹中。您需要将 hibernate3.jar 添加到项目中,同时也需要将 Hibernate 的 lib 文件夹下的所有文件添加到项目中,以免出现 ClassNotDef 的异常...
目录 * 第 1 章 Hibernate 入门 * 第 2 章 体系架构 * 第 3 章 对象/关系数据库映射(O/R Mapping) hibernate.cfg.xml hibernate.cfg.xml 是 Hibernate 的配置文件,用于定义 Hibernate 的配置信息。hibernate....
- 下载Hibernate框架,并了解其目录结构,熟悉Documentation目录、Lib目录以及Project目录。 - 创建数据库和表,以便为Hibernate操作做准备。 - 编写实体类,将POJO与数据库表进行映射。 - 导入Hibernate所需的依赖...
jar包在dialect目录下: 1. DmDialect-for-hibernate2.0.jar 对应 Jdk1.4及以上, hibernate2.0 环境 2. DmDialect-for-hibernate2.1.jar 对应 Jdk1.4及以上, hibernate2.1 -- 2.X 环境 3. DmDialect-for-hibernate3.0...
这些 JAR 包位于 `hibernate-release-4.2.5.Final\lib\required` 目录下,包括 `hibernate-core-4.2.5.Final.jar`、`hibernate-jpa-2.0-api-1.0.1.Final.jar`、`hibernate-commons-annotations-4.0.1.Final.jar` 等...
在项目的`lib`目录下,通常包含多个JAR包,但实际操作中只需关注`required`目录下的核心库即可。 #### 项目结构与组件 项目结构清晰对开发非常重要,典型的Hibernate项目结构如下: - **config**:存放Hibernate...
"其中的lib中jar包打包下载"意味着这个压缩包包含了Hibernate库中所有的依赖JAR文件,这些文件通常位于项目结构中的"lib"目录下。由于"官网下载实在太慢",这个打包好的压缩文件为开发者提供了一个快速获取完整...
在项目实践中,为了更好地理解这个例子,你可以打开`day56_01hibernate one2many`目录,查看具体代码,包括实体类、映射文件、DAO层、Service层以及相关的测试类。通过分析这些代码,你将能更好地掌握Hibernate一对...
2. **lib** 目录:这个目录下包含了许多依赖的 JAR 包,这些库文件对于 Hibernate 的正常工作至关重要。其中可能包括了以下组件: - 数据库驱动:例如 MySQL、Oracle 或 PostgreSQL 的驱动,使得 Hibernate 能够与...
在`src`目录下,我们需要创建Java实体类来表示数据库中的表。例如,有一个`User`表,对应的实体类可能是这样的: ```java @Entity @Table(name = "User") public class User { @Id @GeneratedValue(strategy = ...
在`hibernate.jar`压缩包中的`lib`目录,通常包含了一系列依赖库,这些库是Hibernate运行所必需的,例如: - 数据库驱动:如mysql-connector.jar,用于连接特定的数据库。 - Jakarta Commons Logging:日志接口,...
在本文中,我们将深入探讨一个采用JSP、Spring和Hibernate技术构建的博客系统。这种组合提供了强大的功能,包括后端业务逻辑管理、持久层支持以及用户友好的前端界面。 **JSP (JavaServer Pages)** JSP是Java的一...
* 添加配置文件:在项目的 src 目录下添加 hibernate.cfg.xml 配置文件,以便配置 Hibernate 的一些常用信息。 * 配置 Hibernate:在 hibernate.cfg.xml 文件中配置 Hibernate 的一些常用信息,例如 JDBC 连接数据库...
5. **`hibernate.default_catalog`**:指定默认的目录(catalog)名称。 - 示例: ```properties hibernate.default_catalog=myCatalog ``` 6. **`hibernate.session_factory_name`**:指定用于创建...