草庐IT

db_insert_placeholder

全部标签

java - 即使在关闭 session 后,Hibernate 也会在 oracle db 中保持非 Activity session

在我的hibernate应用程序中,我编写了以下用于将EmployeeRegistration对象保存到oracle数据库中的代码。publicIntegersubmitDetails(EmployeeRegistrationes){Sessionsession=factory.openSession();Transactiontx=null;IntegeremployeeID=null;try{tx=session.beginTransaction();employeeID=(Integer)session.save(es);session.flush();tx.commit();}

java - ORA-12519, TNS :no appropriate service handler found while inserting into Oracle Database with X threads

我正在尝试插入到具有两列的Oracle数据库中-IDPrimaryKeyvarchar2(4000)ACCOUNTvarchar2(4000)我为此编写了一个多线程程序。并且每个线程每次都使用uniqueid插入ID列,因为ID是主键。我在某些时候面临的唯一问题是-下面的代码在运行几秒钟后抛出以下异常。1)NullPointerException2)java.sql.SQLException:Listenerrefusedtheconnectionwiththefollowingerror:ORA-12519,TNS:noappropriateservicehandlerfound我无

java - XA/JTA 事务 : JMS message arrives before DB changes are visible

上下文是:生产者(JTA事务PT)正在向JMS队列发送消息并进行数据库更新;consumer(JTAtransactionCT)在同一个队列上监听并在收到消息时读取DB;应用服务器-WebLogic,数据库-Oracle。我观察到,有时CT(还?)无法看到PT的数据库更改,如果已收到相应的JMS消息(PTpromise了吗?)。似乎JTA不能保证这种一致性(这在JurgenHoller的演讲“TransactionChoicesforPerformance”中也得到了证实)。避免此类问题的最佳方法是什么(明显的除外-不使用JTA)?谢谢。 最佳答案

java - 从 Java 插入到 SQL Server 时,我可以获得类似 "BULK INSERT"的速度吗?

在寻找从Java获取数据到SQLServer的最快方法的过程中,我注意到我能想到的最快的Java方法仍然比使用BULKINSERT慢12倍。我的数据是从Java中生成的,而BULKINSERT只支持从文本文件中读取数据,因此除非我将数据输出到临时文本文件,否则不能使用BULKINSERT。反过来,这当然会对性能造成巨大影响。从Java插入时,插入速度约为每秒2500行。甚至当我在for循环之后和executeBatch之前测量时间时。因此,在内存中“创建”数据不是瓶颈。使用BATCHINSERT插入时,插入速度约为每秒30000行。这两个测试都是在服务器上完成的。所以网络也不是瓶颈。关

java - 当调用 openSession 并且无法建立与 DB 的连接时,Hibernate 不会抛出异常

当我配置hibernate以连接到数据库并且由于某种原因连接失败时,我注意到它在构建工厂(这是可以接受的)和我调用sessionFactory.openSession()(这是不太能接受)。更烦人的是,在我调用sessionFactory.openSession()之后,session.isConnected()返回true。(这是完全不能接受的)。到那一刻唯一告诉我它没有连接到数据库的提示是一个WARN日志条目,它由它在内部捕获并发送到记录器的java.sql.SQLException引起。除了创建一个伪事务来强制异常之外还有其他获取连接状态的方法吗?(也许配置中的一个选项说“不记录

java - 为 DB2 和 Oracle 使用 java 插入 BLOB

我目前正在验证在Oracle上为DB2开发的应用程序。因为我们不想维护两个单独的源,所以我需要一些查询来将blob插入到一个字段中,这在oracle和db2中都有效。我没有任何标识符来区分应用程序在哪个数据库下运行。我在Oracle中使用了utl_raw.cast_to_raw,在DB2中使用了CAST()asBLOB,它们互不兼容。 最佳答案 您将无法找到使用某种类型转换的常见SQL。但是您可以使用JDBC的setBinaryStream()使用“普通”SQL来做到这一点PreparedStatementpstmt=connect

java - DAO/存储库 : Good practice return value after insert/update

虽然这可能是一个微不足道的问题,但我一直想知道这个问题。通常,在插入数据库后,返回业务实体的ID似乎是常见的做法。@OverridepublicLongcreateUser(UserEntityuser){em.merge(user);em.flush();returnuser.getId();}返回id而不是业务对象引用本身是否有令人信服的理由?同样,我看到update返回void,但它也可能是一个id/User。如果我要编写一个DAO/Repository供其他人使用,建议的返回值是什么(如果有),为什么? 最佳答案 如果已成功

java - 如何在 MyBatis 中使用 TypeHandler 进行 INSERT 语句

有配置:SELECT`column1`,`column2`,`column3`FROM`table`;对于select语句一切正常,调用处理程序。如何编写INSERT语句以在插入数据时为column3调用相同的处理程序? 最佳答案 您可以按如下方式使用INSERT语句。INSERTintotable(column1,column2,column3)values(#{prop1},#{prop2},#{prop3,typeHandler=package.Typehandler})编辑:使用typeHandler=而不是typehand

java - Weblogic:调用没有架构名称的 DB2 存储过程(属性 currentSchema)

我有一个在Weblogic上运行的Java应用程序。应用程序需要访问DB2数据库中的存储过程,因此通过JNDI名称配置和访问JDBC数据源。数据来源:ClassDriver:com.ibm.db2.jcc.DB2DriverProperties:user=MYUSERDatabaseName=MYDB以下示例按预期工作。Contextenv=null;DataSourcepool=null;Hashtableht=newHashtable();ht.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFa

java 1.5 : Best practice to keep constants for column name of db tables?

技术:-Java1.5或1.6-hibernate3.4为了避免在更改列名或表名时在多个位置更新列名,我想要一个相同的常量文件。我有以下疑问?一种可能的解决方案是维护一个全局文件,该文件存储数据库中所有表的列名的常量。喜欢classDbConstants{publicstaticfinalStringEMPLOYEE__PERFORMANCE_DESC="performance_desc";}在上面的例子中,employees是表名,performance_desc是列名。因此,在命名常量时遵循一种tablename__columnname格式,以避免两个不同表的两个常量在具有列名的情