我正在处理hibernate问题,当我打开当前项目时,我发现我的Session-Factory已过时:
AnnotationConfiguration af = new AnnotationConfiguration();
SessionFactory factory = af.configure().buildSessionFactory();
Session session = factory.openSession();
AnnotationConfiguration现在似乎已被弃用…所以我检查了JavaDoc,并得知它已移至:
org.hibernate.cfg.Configuration
到目前为止,我的代码运行良好,实际上我不想更改它。但是我在Google上搜索,发现有人问自己同样的问题,为什么需要更改SessionFactory …
http://rgordon.co.uk/博客/ 2012/02/24 / hibernate-please-dont-deprecate-
yourself /
这篇文章是从2012年开始的(不是那么古老…),并以这种方式描述了所有内容:
ServiceRegistryBuilder serviceRegistryBuilder = new ServiceRegistryBuilder();
serviceRegistryBuilder.applySettings(properties);
ServiceRegistry serviceRegistry = serviceRegistryBuilder.buildServiceRegistry();
Configuration configuration = new Configuration().addClass(FeedTradePersistable.class);
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
我实现了。JavaDoc证明这是错误的-再次!不推荐使用。它指的是:
org.hibernate.boot.registry.StandardServiceRegistryBuilder
我再次用谷歌搜索。结果并不令人满意…
我开始修改代码…
ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();
Configuration configuration = new Configuration();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Session session = sessionFactory.openSession();
并引发异常…
org.hibernate.HibernateException:当未设置“ hibernate.dialect”时,连接不能为空
在行:
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
我很确定这是因为我没有指定任何配置设置。其实,我不想。我对hibernate.cfg.xml感到满意。
我玩了一下configuration.addFile(..-没那么成功…
有人对此有想法吗?谢谢
更新:(hibernate.cfg.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="hibernate.connection.url">jdbc:sqlserver://localhost\SQLEXPRESS</property>
<property name="hibernate.connection.username">qohelet</property>
<property name="hibernate.connection.password">password</property>
<property name="current_session_context_class">thread</property>
<property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="bonecp.setIdleMaxAgeInMinutes">240</property>
<property name="bonecp.setIdleConnectionTestPeriodInMinutes">5</property>
<property name="bonecp.partitionCount">3</property>
<property name="bonecp.acquireIncrement">10</property>
<property name="bonecp.maxConnectionsPerPartition">60</property>
<property name="bonecp.minConnectionsPerPartition">20</property>
<property name="bonecp.statementsCacheSize">50</property>
<property name="bonecp.releaseHelperThreads">3</property>
<mapping class="order.Line" />
<mapping class="order.Order" />
<mapping class="order.Group" />
</session-factory>
</hibernate-configuration>
更新(2014年2月16日): 我认为也有必要向您展示我的pom.xml。我花了一段时间才弄清楚哪种Hibernate-
Framework适用于我…
<dependency>
<groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>4.0.2.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.6.10.Final</version>
<exclusions>
<exclusion>
<artifactId>hibernate-commons-annotations</artifactId>
<groupId>org.hibernate.common</groupId>
</exclusion>
<exclusion>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<groupId>org.hibernate.javax.persistence</groupId>
</exclusion>
<exclusion>
<artifactId>hibernate-commons-annotations</artifactId>
<groupId>org.hibernate</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.1.8.Final</version>
<exclusions>
<exclusion>
<artifactId>hibernate</artifactId>
<groupId>org.hibernate</groupId>
</exclusion>
<exclusion>
<artifactId>hibernate-annotations</artifactId>
<groupId>org.hibernate</groupId>
</exclusion>
<exclusion>
<artifactId>hibernate-commons-annotations</artifactId>
<groupId>org.hibernate</groupId>
</exclusion>
<exclusion>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<groupId>org.hibernate.javax.persistence</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>3.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jpamodelgen</artifactId>
<version>1.1.1.Final</version>
<scope>provided</scope>
</dependency>
当我有一些时间使软件现代化时,我决定投入一些精力并进行一些研究:
http://www.codejava.net/frameworks/hibernate/building-hibernate-
sessionfactory-from-service-
registry
提供了一种现代化的方法HibernateUtil
:
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class HibernateUtil {
private static SessionFactory sessionFactory;
public static SessionFactory getSessionFactory() {
if (sessionFactory == null) {
Configuration configuration = new Configuration().configure();
ServiceRegistryBuilder registry = new ServiceRegistryBuilder();
registry.applySettings(configuration.getProperties());
ServiceRegistry serviceRegistry = registry.buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
}
return sessionFactory;
}
}
即使此版本似乎也可以工作:
import java.util.logging.Level;
import java.util.logging.Logger;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
Configuration cfg = new Configuration();
sessionFactory = cfg.configure("hibernate.cfg.xml").buildSessionFactory();
} catch (Throwable ex) {
Logger.getLogger(HibernateUtil.class.getName()).log(Level.SEVERE, null, ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
但是我的问题是我不想将新版本与旧库集成在一起。更新后,我遇到了
java.lang.NoSuchMethodError:org.hibernate.annotations.common.reflection.java.JavaReflectionManager.injectClassLoaderDelegate(Lorg
/ hibernate / annotations / common / reflection / ClassLoaderDelegate;)V
经常。烦死了 通常Mkyong提供了很好的解决方案,但在我的情况下,他写了相反解决方案…
因此,我搜索了一些存储库,发现了一个非常简单的解决方案(比较:http :
//hibernate.org/orm/downloads/):
<!-- HIBERNATE -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.0.Final</version>
</dependency>
其他一些小问题使我停了下来:在中,hibernate.cfg.xml
我不得不将行从更改update
为auto
:
<property name="hbm2ddl.auto">auto</property>
将其与我的旧pom.xml进行比较…-那时我与Hibernate进行了第一次“接触”,并添加了所有似乎有用的东西,直到它起作用为止。在这样做之后,我停止接触它了……差不多两年了……永远不要换一支“获胜”的球队,对吗?
<dependency>
<groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>4.0.2.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.12.Final</version>
<exclusions>
<exclusion>
<artifactId>hibernate-commons-annotations</artifactId>
<groupId>org.hibernate.common</groupId>
</exclusion>
<exclusion>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<groupId>org.hibernate.javax.persistence</groupId>
</exclusion>
<exclusion>
<artifactId>hibernate-commons-annotations</artifactId>
<groupId>org.hibernate</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.1.8.Final</version>
<exclusions>
<exclusion>
<artifactId>hibernate</artifactId>
<groupId>org.hibernate</groupId>
</exclusion>
<exclusion>
<artifactId>hibernate-annotations</artifactId>
<groupId>org.hibernate</groupId>
</exclusion>
<exclusion>
<artifactId>hibernate-commons-annotations</artifactId>
<groupId>org.hibernate</groupId>
</exclusion>
<exclusion>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<groupId>org.hibernate.javax.persistence</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>3.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jpamodelgen</artifactId>
<version>1.1.1.Final</version>
<scope>provided</scope>
</dependency>
简单介绍了Redis的内存淘汰策略。 Redis的参数用于指定 Redis 能使用的最大内存,既可以在 redis.conf 配置文件中设置(单位Byte),也可以在运行过程中通过 命令动态修改。 将 设置为,或者没有设置该参数,则表示不进行内存限制。但对32位系统来说有一个隐性的限制条件是最多使用 3GB 内存,64位系统则无限制。 当达到内存限制时(maxmemory),Redis 将尝试根据
门口等了10分钟,保安不让进,HR来了之后带到休息室,到面试时间了把你带到办公室,和面试官之间隔了张小桌子,距离一米,面试官人非常好,不给压力。 技术栈是golang,应该撞到枪口上了,面试官问了很多go有关的。 总的来说面的东西有三类,八股,项目,开放式问题。从中又延伸了很多,一共35分钟。 具体记不太清了,大概有以下问题: 1. TCP粘包问题,如何解决 2. go中channel的作用 3.
1.自我介绍 2.react掌握的怎么样(完全没学过,开场就g了) 3.js数据类型,分别存储在哪里 4.怎么判断数据类型,不同方法之间的区别 5.怎么判断null类型 6.http缓存以及相关配置 7.no-cache和no-store的区别 8.http1.0/1.1/2.0区别 9.经典的同步任务宏任务微任务的输出顺序 10.js事件模型和事件委托 11.怎么中断事件捕获和事件冒泡 12.p
本文向大家介绍说一说 Redis 的数据过期淘汰策略?相关面试题,主要包含被问及说一说 Redis 的数据过期淘汰策略?时的应答技巧和注意事项,需要的朋友参考一下 Redis 中数据过期策略采用定期删除+惰性删除策略。 1、定期删除、惰性删除策略是什么? 定期删除策略:Redis 启用一个定时器定时监视所有的 key,判断key是否过期,过期的话就删除。这种策略可以保证过期的 key 最终都会被删
问题内容: 因此,我遇到了这样的问题:每次添加新用户帐户时,它都会踢出已登录的当前用户。我阅读了firebase api,并说:“ 如果创建了新帐户,则该用户会自动登录“ 但是他们从没有说过避免这种情况的任何其他事情。 我是管理员,正在向我的网站添加帐户。如果我可以在不注销并登录到新帐户的情况下添加帐户,我会很高兴。任何方式我都可以避免这种情况? 问题答案: 这实际上是可能的。 但并非直接,做到这
本文向大家介绍Redis 淘汰策略有哪些?相关面试题,主要包含被问及Redis 淘汰策略有哪些?时的应答技巧和注意事项,需要的朋友参考一下 volatile-lru:从已设置过期时间的数据集(server. db[i]. expires)中挑选最近最少使用的数据淘汰。 volatile-ttl:从已设置过期时间的数据集(server. db[i]. expires)中挑选将要过期的数据淘汰。 vo