java—通过hibernate获取数据,无需实体类

ljo96ir5  于 2021-06-24  发布在  Mysql
关注(0)|答案(4)|浏览(440)

我们使用hibernate和注解来Map数据库和实体。但对于某些数据表,我不需要实体类(因为这些表名和所有表名都在不断变化),这样应用程序就更具动态性
那么,是否可以使用hibernate从没有实体类的表中加载数据呢?
如果是,怎么办?

jk9hmnmh

jk9hmnmh1#

如果不使用持久性类,则不会发生数据封装,因此可以直接访问数据。
hibernate查询与pojo类交互以获取数据。
query、criteria、hql所有类都使用pojo获取数据。
hibernate框架主要是为ormMap而设计的。
因此没有pojo类,就不可能与数据库交互。
因此,使用jdbc连接将是剩下的选择。

bnl4lu3b

bnl4lu3b2#

hibernate提供了一种执行sql查询并将其Map到实体或任何类的方法:原生sql查询。

2jcobegt

2jcobegt3#

使用Hibernate5版本-5.4.0中引入的动态模型。最终的hibernate动态模型要实现这一点,需要创建hbm文件。

Session s = openSession();
Transaction tx = s.beginTransaction();
Session s = openSession();

// Create a customer
Map david = new HashMap();
david.put("name", "David");

// Create an organization
Map foobar = new HashMap();
foobar.put("name", "Foobar Inc.");

// Link both
david.put("organization", foobar);

// Save both
s.save("Customer", david);
s.save("Organization", foobar);

tx.commit();
s.close();

这里customer和organization是表名organization是customer的父级。点击以上链接了解更多详情

3phpmpom

3phpmpom4#

使用普通的jdbc。我不知道你说的“表名和所有表名都在不断变化”是什么意思,但我觉得这听起来是个坏主意。
您可以使用字符串连接创建sql查询,然后使用普通jdbc执行它。这样就可以使表名保持动态。

相关问题