- 浏览: 190359 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (321)
- eclipse (4)
- idea (2)
- Html (8)
- Css (14)
- Javascript (8)
- Jquery (6)
- Ajax Json (4)
- Bootstrap (0)
- EasyUI (0)
- Layui (0)
- 数据结构 (0)
- Java (46)
- DesPattern (24)
- Algorithm (2)
- Jdbc (8)
- Jsp servlet (13)
- Struts2 (17)
- Hibernate (11)
- Spring (5)
- S2SH (1)
- SpringMVC (4)
- SpringBoot (11)
- WebService CXF (4)
- Poi (2)
- JFreeChart (0)
- Shiro (6)
- Lucene (5)
- ElasticSearch (0)
- JMS ActiveMQ (3)
- HttpClient (5)
- Activiti (0)
- SpringCloud (11)
- Dubbo (6)
- Docker (0)
- MySQL (27)
- Oracle (18)
- Redis (5)
- Mybatis (11)
- SSM (1)
- CentOS (10)
- Ant (2)
- Maven (4)
- Log4j (7)
- XML (5)
最新评论
1. Hibernate用对象标识符(OID)来区分对象
2. Hibernate对象标识符生成策略
1) increment由Hibernate自动以递增的方式生成标识符,适用代理主键
2) identity由底层数据库生成标识符;适用代理主键
3) sequcence由Hibernate根据底层数据库的序列来生成标识符;适用代理主键
4) hilo由Hibernate根据high/low算法来生成标识符。适用代理主键
5) native根据底层数据库对自动生成标识符的支持能力,来选择identity,sequence或hilo;适用代理主键
session缓存 student表 s1 student对象 OID=1 1 stu1 s2 student对象 OID=2 2 stu2 s3 student对象 OID=1
Student.java package com.andrew.model; public class Student { private long id; private String name; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + "]"; } } Student.hbm.xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.andrew.model"> <class name="Student" table="t_student"> <id column="stuId" name="id"> <generator class="native"/> </id> <property generated="never" lazy="false" name="name"/> </class> </hibernate-mapping> hibernate.cfg.xml <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 数据库连接设置 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/hibernate4</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <!-- 方言 --> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- 控制台显示SQL --> <property name="show_sql">true</property> <!-- 自动更新表结构 --> <property name="hbm2ddl.auto">update</property> <!-- Mapper --> <mapping resource="com/andrew/model/Student.hbm.xml"/> </session-factory> </hibernate-configuration> HibernateUtil.java package com.andrew.util; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; public class HibernateUtil { private static final SessionFactory sessionFactory = buildSessionFactory(); private static SessionFactory buildSessionFactory() { // 1. 实例化配置文件 Configuration configuration = new Configuration().configure(); // 2. 实例化服务登记 ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .applySettings(configuration.getProperties()).build(); // 3. 获取Session工厂 return configuration.buildSessionFactory(serviceRegistry); } public static SessionFactory getSessionFactory() { return sessionFactory; } } StudentTest.java package com.andrew.service; import org.hibernate.Session; import org.hibernate.SessionFactory; import com.andrew.model.Student; import com.andrew.util.HibernateUtil; public class StudentTest { public static void main(String[] args) { SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); Session session = sessionFactory.openSession(); // 1. 生成一个session session.beginTransaction(); // 2. 开启事务 Student s1 = (Student)session.get(Student.class, Long.valueOf(1)); Student s2 = (Student)session.get(Student.class, Long.valueOf(2)); Student s3 = (Student)session.get(Student.class, Long.valueOf(1)); System.out.println(s1==s2); System.out.println(s1==s3); session.getTransaction().commit(); // 3. 提交事务 session.close(); // 4. 关闭session } } 运行结果: false true
2. Hibernate对象标识符生成策略
主键的分类 业务主键 VS 代理主键 代理主键是不具有业务性的; StudentIdTest.java package com.andrew.service; import org.hibernate.Session; import org.hibernate.SessionFactory; import com.andrew.model.Student; import com.andrew.util.HibernateUtil; public class StudentIdTest { public static void main(String[] args) { SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); Session session = sessionFactory.openSession(); // 1. 生成一个session session.beginTransaction(); // 2. 开启事务 Student s = new Student(); s.setName("张三"); session.save(s); session.getTransaction().commit(); // 3. 提交事务 session.close(); // 4. 关闭session } }
1) increment由Hibernate自动以递增的方式生成标识符,适用代理主键
Student.hbm.xml <generator class="increment"/> StudentIdTest.java运行结果: Hibernate: select max(stuId) from t_student Hibernate: insert into t_student (name, stuId) values (?, ?)
2) identity由底层数据库生成标识符;适用代理主键
Student.hbm.xml <generator class="identity"/> StudentIdTest.java运行结果: Hibernate: insert into t_student (name) values (?)
3) sequcence由Hibernate根据底层数据库的序列来生成标识符;适用代理主键
4) hilo由Hibernate根据high/low算法来生成标识符。适用代理主键
Student.hbm.xml <generator class="hilo"/> StudentIdTest.java运行结果: Hibernate: select next_hi from hibernate_unique_key for update Hibernate: update hibernate_unique_key set next_hi = ? where next_hi = ? Hibernate: insert into t_student (name, stuId) values (?, ?)
5) native根据底层数据库对自动生成标识符的支持能力,来选择identity,sequence或hilo;适用代理主键
Student.hbm.xml <generator class="native"/> StudentIdTest.java运行结果: Hibernate: insert into t_student (name) values (?)
发表评论
-
Hibernate高级配置
2019-01-16 08:52 3541. 配置数据库连接池 反问数据库,需要不断的创建和释放 ... -
Hibernate查询方式
2019-01-16 08:52 3981) Hibernate查询方式简介 新建项目Hiber ... -
Hibernate检索策略
2019-01-15 14:16 3741. Hibernate检索策略 新建项目Hiberna ... -
Hibernate映射关系
2019-01-15 14:16 4371. Hibernate映射关系 新建项目Hiberna ... -
Hibernate映射继承
2019-01-15 14:16 4601. Hibernate映射继承 新建项目Hiberna ... -
Hibernate映射类型
2019-01-15 08:54 3871. 基本类型映射 Hibernat ... -
Hibernate操作对象
2019-01-15 08:54 3301. Hibernate中四种对象状态 临时状态(tra ... -
关联关系一对多映射
2019-01-14 09:01 4001. Junit4方法详解 setUpBeforeCla ... -
Hibernate4的CRUD
2019-01-14 09:01 4161. Hibernate4的CRUD 新建项目Hiber ... -
Hibernate简介
2019-01-14 08:55 3631. Hibernate简介 Hibernate官网:htt ...
相关推荐
**对象标识符(OID)**是SNMP中用于唯一标识管理信息对象的关键概念。每个OID都是一个全局唯一的数字序列,类似于IPv6地址的格式,但具有更明确的层次结构。由于OID长度较长且数字构成,不易记忆,因此引入了MIB的...
对象标识符(OID)通常是系统自动生成的唯一标识,用于区分不同的对象实例,不应包含任何业务含义,以免影响数据模型的独立性。 3.2 OID 的唯一性 每个对象实例都应该有一个唯一的OID,以确保在数据库中能够精确地...
在 Hibernate 中,对象的唯一标识符(OID)是非常重要的,因为它用来区分数据库中的不同记录。OID通常被称为主键(Primary Key)。Hibernate 提供了多种内置的标识符生成策略,以适应不同的数据库系统和应用场景。 ...
#### 对象标识符(OID) OID在对象持久化过程中扮演关键角色,但不应具有商业意义,即其值不能透露业务逻辑或状态。OID的唯一性由不同的策略保证,如使用整数序列、GUID/UUID、或通过特定机制自动分配。选择合适的...
在Hibernate中,通过OID来判断两个持久化对象是否相同,确保一级缓存中不会有重复的OID对象。在处理对象关系映射时,OID起到了关键的作用,使得对象在内存中的状态能够与数据库中的记录保持一致。 Hibernate的对象...
**OID(对象标识符)**是SNMP中的关键概念之一,它是一个由数字组成的层次结构,用作唯一标识网络管理信息库(MIB)中特定变量的地址。OID类似于URL在互联网上的作用,用于定位特定的数据项或功能。 #### Java实现...
OID(Object Identifier,对象标识符)是MIB中的关键元素,用于唯一地标识MIB中的每个管理对象。以下是对"MIB的OID的编写规则和习惯"的详细阐述: 1. **OID的基本结构**:OID是由一系列无符号整数组成的序列,每个...
6.3 Hibernate用对象标识符(OID)来区分对象 126 6.4 Hibernate的内置标识符生成器的用法 128 6.4.1 increment标识符生成器 131 6.4.2 identity标识符生成器 133 6.4.3 sequence标识符生成器 134 6.4.4 hilo...
6.3 Hibernate用对象标识符(OID)来区分对象 126 6.4 Hibernate的内置标识符生成器的用法 128 6.4.1 increment标识符生成器 131 6.4.2 identity标识符生成器 133 6.4.3 sequence标识符生成器 134 6.4.4 hilo...
标题“Export & Import OID Data”涉及的是网络管理中对象标识符(OID)数据的导出与导入操作。OID是SNMP(简单网络管理协议)中用于唯一标识网络设备或对象的一种编码方式。在这个主题中,我们将深入探讨OID数据的...
6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器的用法 6.4.1 increment标识符生成器 6.4.2 identity标识符生成器 6.4.3 sequence标识符生成器 6.4.4 hilo标识符生成器 ...
华为设备支持自定义OID(对象标识符)的SNMPTrap,使得告警信息更具体、详细。例如,S5700-V200R013C00版本的MIB(管理信息库)包含了众多与设备状态、性能相关的OID,这些OID是识别和解析告警信息的关键。 其次,...
在本篇中,我们将深入探讨Hibernate中的单一映射机制,这是一种在Java应用程序中实现对象关系映射(ORM)的关键技术。Hibernate是一个流行的开源框架,它简化了与数据库的交互,通过对象模型自动处理数据的持久化。...
1. **对象标识符(OID)**:每个对象都有一个唯一的OID,用于唯一标识该对象。OID可以作为引用其他对象的基础,类似于关系数据库中的外键。 2. **对象链接**:OODB支持对象间的直接链接,通过OID实现对象之间的关联...
6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器的用法 6.4.1 increment标识符生成器 6.4.2 identity标识符生成器 6.4.3 sequence标识符生成器 6.4.4 hilo标识符生成器 ...
6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器的用法 6.4.1 increment标识符生成器 6.4.2 identity标识符生成器 6.4.3 sequence标识符生成器 6.4.4 hilo标识符生成器 ...
6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器的用法 6.4.1 increment标识符生成器 6.4.2 identity标识符生成器 6.4.3 sequence标识符生成器 6.4.4 hilo标识符生成器 ...
这个过程包括解析MIB文件,映射对象标识符(OID)到具体的变量,以及查询和获取这些变量的当前值。 2. **设备数据的修改**:SNMP允许管理站对网络设备进行配置变更,如更改接口状态、设置阈值等。这通常涉及发送SET...
* OID(对象标识符),是 SNMP 代理提供的具有唯一标识的键值。 * MIB(管理信息库),是提供数字化 OID 到可读文本的映射。一个 MIB 描述了在哪里找某个值、以及返回结果是什么。 获取设备的 MIB 获取设备的 MIB ...