【问题标题】:Can I use an EntityManager to generate a .sql file instead of writing to a database?我可以使用 EntityManager 生成 .sql 文件而不是写入数据库吗?
【发布时间】:2014-07-29 18:45:41
【问题描述】:

我正在使用 EntityManager 将大量新条目写入数据库。现在一个数据库管理员问我是否可以给他一个包含所有更改的 .sql 文件,而不是直接访问数据库。如果不手动创建所有 sql 语句,这可能吗?

【问题讨论】:

  • 你为什么不给他一个数据库转储?
  • 因为他只想要更改,而不是全部内容,@PankajSharma

标签: java sql entitymanager


【解决方案1】:

我认为没有允许将 sql 语句重定向到文件而不是将其发送到数据库的内置函数。您可以改用 P6Spy 之类的数据库日志记录和拦截框架,并使用 slf4j 或类似于使用文件附加程序的文件记录实际的 sql 语句。只需回滚原来负责做实际数据库工作的事务,这样最终数据就不会被插入两次。

也许这不是最好的解决方案,但根据给出的信息,它可能是一个很好的解决方案。

【讨论】:

  • 我会调查一下,但我仍然宁愿不必为了记录我写的内容而写入实际数据库...
【解决方案2】:

(抱歉目前无法评论)

对于 OpenJPA/EclipseLink/Hibernate,您可以启用 SQL Trace 来查看正在执行的 sql 语句。或者,您可以使用其中一种 JPA 监控工具。

仅供参考:为 OpenJPA 启用 SQL 跟踪 (persistence.xml):

<property name="openjpa.Log" value="DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=TRACE"/>
<property name="openjpa.ConnectionFactoryProperties" value="PrettyPrint=false, PrettyPrintLineLength=120, PrintParameters=True"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多