# hibernate-demo **Repository Path**: dm-adaptation/hibernate-demo ## Basic Information - **Project Name**: hibernate-demo - **Description**: hibernate 适配 dm 的代码,根据标签来区分不同版本的 hibernate - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-11 - **Last Updated**: 2025-02-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Hibernate 与 DM 的适配 本文致力于解决 hibernate 与 DM 的适配,需要说明的是,依赖仅只有 hibernate,暂不涉及 springboot。 ## 环境准备 * jdk:openjdk 1.8; * hibernate:5.6.15.Final; * dm:8.1.4.6; * dm-jdbc-driver: 8.1.4.6; ## 依赖准备 向 `pom.xml` 添加如下依赖包: ```xml org.hibernate hibernate-core 5.6.15.Final com.dameng DmDialect-for-hibernate5.6 8.1.4.6 com.dameng DmJdbcDriver8 8.1.4.6 ``` 等待 maven 安装完成即可。 ## 新建配置文件 在 `resource` 目录下,新增 `hibernate.cfg.xml` 文件,此为 hibernate 的配置文件: ```xml dm.jdbc.driver.DmDriver jdbc:dm://localhost:5236 ADAPTATION Adaptation@2025 org.hibernate.dialect.DmDialect true update ``` ## 新建实体类 我们新建一个 `Person` 实体类用于测试使用,代码如下: ```java @Entity @Data public class Person { @Id private int id; private String name; private int age; } ``` ## 新建实体类配置文件 同样在 `resource` 目录,新建 `Person.hbm.xml` 配置文件,代码如下: ```xml ``` 至此,hibernate 的配置就完成了,接下来写一下 curd 的代码。 ## 新增数据 目前,只新增一条数据作为测试,代码如下: ```java public void insertItem() { Configuration configuration = new Configuration().configure(); SessionFactory sessionFactory = configuration.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); Person person = new Person(); person.setName("guangluo"); person.setAge(25); session.save(person); transaction.commit(); session.close(); sessionFactory.close(); } ``` 这时,数据库中的 ADAPTATION 模式下,会新增一张 PERSON 表,同时,里面会有一条数据。 ## 修改数据 更新刚插入的那条数据,代码如下: ```java public void updateItem() { Configuration configuration = new Configuration().configure(); SessionFactory sessionFactory = configuration.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); Person person = session.get(Person.class, 1); person.setName("guangluo"); person.setAge(37); session.update(person); transaction.commit(); session.close(); sessionFactory.close(); } ``` 年龄将更改为 37 岁。 ## 查询数据 查询刚刚修改过的数据,代码如下: ```java public List queryItems() { Configuration configuration = new Configuration().configure(); SessionFactory sessionFactory = configuration.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); List persons = session.createQuery("from Person").list(); transaction.commit(); session.close(); sessionFactory.close(); for (Person person : persons) { System.out.println(person); } return persons; } ``` ## 删除数据 删除掉插入的数据,代码如下: ```java public void deleteItem() { Configuration configuration = new Configuration().configure(); SessionFactory sessionFactory = configuration.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); Person person = session.get(Person.class, 1); session.delete(person); transaction.commit(); session.close(); sessionFactory.close(); } ``` 数据被删除,如下图所示。 此篇文章只证明 hibernate 可以适配 DM 以及给各位适配 DM 提供思路。 如果项目中使用了其他依赖导致无法启动项目,可以详细排查一下其他依赖,会不会有兼容性的问题。 > 详细代码可见:https://gitee.com/dm-adaptation/hibernate-demo > > 如果遇到 hibernate 适配 DM 遇到问题,可以提 issue,工作空余时间会解答。