没有合适的资源?快使用搜索试试~ 我知道了~
Spring Data JPA/Hibernate 运行期动态模型、动态实体建表、动态字段查询的方式
14 下载量 124 浏览量
2020-12-14
11:16:00
上传
评论 1
收藏 54KB PDF 举报
温馨提示
试读
2页
最近公司的低代码开发平台数据中心需要重构,需要在页面上创建表模型添加修改字段。涉及到动态生成表结构,动态生成模型实体类动态查询表字段等等,经过调研发现hibernate在这方面是很方便的,调用内置API就能完成系列操作,下面贴出核心代码: /** * @author cjbi */ public class DynamicDdlTest { @Autowired private EntityManager entityManager; /** * 运行期的持久化实体没有必要一定表示为像POJO类或JavaBean对象那样的形式。 * Hibernate也支持动态模
资源推荐
资源详情
资源评论
Spring Data JPA/Hibernate 运行期动态模型、动态实体建运行期动态模型、动态实体建
表、动态字段查询的方式表、动态字段查询的方式
最近公司的低代码开发平台数据中心需要重构,需要在页面上创建表模型添加修改字段。涉及到动态生成表结构,动态生成模
型实体类动态查询表字段等等,经过调研发现hibernate在这方面是很方便的,调用内置API就能完成系列操作,下面贴出核心
代码:
/**
* @author cjbi
*/
public class DynamicDdlTest {
@Autowired
private EntityManager entityManager;
/**
* 运行期的持久化实体没有必要一定表示为像POJO类或JavaBean对象那样的形式。
* Hibernate也支持动态模型在运行期使用Map)和象DOM4J的树模型那样的实体表示。
* 使用这种方法,你不用写持久化类,只写映射文件就行了。
**/
public static final String XML_MAPPING = "" +
"" +
"" +
" " +
" " +
" " +
" " +
" " +
" " +
" " +
" " +
" " +
" " +
"";
@Test
public void testDynamicDdl() {
SessionFactory sessionFactory = entityManager.getEntityManagerFactory().unwrap(SessionFactory.class);
StandardServiceRegistry serviceRegistry = sessionFactory.getSessionFactoryOptions().getServiceRegistry();
MetadataSources metadataSources = new MetadataSources(serviceRegistry);
sessionFactory.getSessionFactoryOptions();
//读取映射文件
metadataSources.addInputStream(new ByteArrayInputStream(XML_MAPPING.getBytes()));
Metadata metadata = metadataSources.buildMetadata();
//更新数据库Schema,如果不存在就创建表,存在就更新字段,不会影响已有数据
SchemaUpdate schemaUpdate = new SchemaUpdate();
schemaUpdate.execute(EnumSet.of(TargetType.DATABASE), metadata, serviceRegistry);
//合并配置
Configuration cfg = new Configuration();
cfg.addInputStream(new ByteArrayInputStream(XML_MAPPING.getBytes()));
SessionFactory newSessionFactory = cfg.buildSessionFactory(serviceRegistry);
//保存对象
Session newSession = newSessionFactory.openSession();
for (int i = 0; i < 100; i++) {
Map student = new HashMap();
student.put("username", "张三" + i);
student.put("password", "adsfwr" + i);
student.put("sex", i % 2 == 0 ? "male" : "female");
student.put("age", i);
student.put("birthday", new Date());
newSession.save("Student", student);
}
//查询所有对象
Query query = newSession.createQuery("from Student");
List list = query.getResultList();
System.out.println("resultList: " + list);
}
资源评论
weixin_38725426
- 粉丝: 6
- 资源: 936
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功