Tag: hibernate

hibernate缓慢以获取Postgres连接

我很难debugging这个问题。 每当我尝试与postgresbuild立连接时,都需要一整分钟的时间。 连接build立后,一切都很好。 我已经尝试禁用所有的映射,不加载任何,但仍然需要很长的时间来获取连接。 我也试过禁用validation,没有区别。 当我使用一个简单的JDBC连接时,它是即时的。 Hibernate正在做一些需要相当多的时间,我似乎无法缩小它。 任何input,非常感谢! Postgres驱动程序: postgresql-9.1-901.jdbc4.jar configuration设置: <hibernate-configuration> <session-factory> <!– properties –> <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property> <property name="connection.driver_class">org.postgresql.Driver</property> <property name="connection.url">jdbc:postgresql://xxxx.com:5432/xxxxx</property> <property name="connection.username">xxxxxxx</property> <property name="connection.password">xxxxxxx</property> </session-factory> </hibernate-configuration> 代码中的其他设置: config.setProperty("hibernate.hbm2ddl.auto", hbm2ddlMode); //config.setProperty("hibernate.cache.use_query_cache", "true"); config.setProperty("hibernate.cache.use_second_level_cache", "true"); //config.setProperty("hibernate.cache.region.factory_class", "net.sf.ehcache.hibernate.EhCacheRegionFactory"); config.setProperty("hibernate.cache.provider_class", "org.hibernate.cache.EhCacheProvider"); //config.setProperty("hibernate.cache.provider_class", "org.hibernate.cache.NoCacheProvider"); config.setProperty("hibernate.jdbc.fetch_size", "100"); config.setProperty("hibernate.jdbc.batch_size", "30"); config.setProperty("hibernate.jdbc.use_scrollable_resultset", "true"); config.setProperty("hibernate.connection.provider_class", "org.hibernate.connection.C3P0ConnectionProvider"); config.setProperty("hibernate.c3p0.acquire_increment", "1"); config.setProperty("hibernate.c3p0.idle_test_period", "0"); config.setProperty("hibernate.c3p0.min_size", "1"); […]

REST Web服务的身份validation

我开始devise一个REST Web服务,并且对最佳的身份validation方法还不清楚。 该服务将允许个人用户访问/pipe理他们自己的数据,因此需要某种types的用户authentication。 我一直在看这些选项: OAuth的 OAuth似乎更多是关于授权而不是authentication。 我打算在服务内部原生地处理授权,所以我不在寻找解决scheme。 但是,OAuth是否也适用于身份validation? OpenID的 OpenID当然提供了一个authentication解决scheme,但是这更多的是允许用户使用他们的第三方证书(Google,Yahoo等)。虽然我想支持这个,但这不是我主要关心的,我会绝对允许用户注册本机凭据(电子邮件/密码)。 HTTP基本authentication 这很容易实现,但我的理解是,这可能不是一个非常安全的方法。 此外,它似乎需要交换每个访问凭据,但我宁愿用户authentication一次,然后通过会话令牌继续访问。 自定义authentication 基本上,滚动我自己的login/令牌生成服务,并要求一个有效的令牌访问所有其他资源(显然,一切都会通过SSL)。 除了创buildWeb服务外,我还将构build一个代表用户使用这些服务的客户端(Web)应用程序,但我不希望应用程序必须存储用户信息/凭证等。 所以,这样的事情: 用户(使用电子邮件/密码或第三方凭据进行身份validation) – > Web应用程序(使用应用程序ID进行身份validation) – > Web服务 再次,我想允许其他人也build立客户,所以中间层可以是任何第三方应用程序: 用户(使用电子邮件/密码或第三方凭据进行身份validation) – >第三方应用程序(使用应用程序ID进行身份validation) – > Web服务 我的最高要求是: 安全(显然) 原生凭据 支持第三方凭证(Google,Yahoo,LinkedIn等) 支持多个客户端(networking应用程序,手机应用程序,第三方应用程序等) 客户端凭据(只是一个应用程序ID?) login会话过期 授权是不需要的 所以,我的问题是,基于上述(请让我知道这是否太模糊),有没有一个“最好”的方法? OAuth或OpenID是否合适,还是我这样做太复杂,而应该推出我自己的身份validation? 编辑: 我想我将需要实施以下内容: 1)原生凭证/令牌(基于SSL的HTTP基本身份validation?) 2)OpenID“依赖方”允许我的api使用其他地方托pipe的OpenID(即“支持第三方凭证”) 3)OAuth“消费者”,允许我的API访问第三方服务(如访问用户的LinkedIn个人资料)。 4)OpenID“提供者”,允许用户在其他地方使用api的本地ID(可选) 5)OAuth“供应商”,允许第三方应用程序代表用户访问我的api(可选) 这似乎是正确的,还是我做这比它需要更复杂?

JPAhibernate多对多级联

我正在使用JPA 2.0和hibernate。 我有一个User类和一个Group类,如下所示: public class User implements Serializable { @Id @Column(name="USER_ID") private String userId; @ManyToMany @JoinTable(name = "USER_GROUP", joinColumns = { @JoinColumn(name = "GROUP_ID") }, inverseJoinColumns = { @JoinColumn(name = "USER_ID") } ) private Set<Group> groupList; //get set methods } public class Group { @Id @Column(name="GROUP_ID") private String groupId; @ManyToMany(mappedBy="groupList") private Set<User> memberList; //get set […]

从JPA注释的实体类自动生成数据模式

我正在使用JPA(Hibernate的实现)来注释实体类以坚持关系数据库(MySQL或SQL Server)。 有没有一种简单的方法来从注释类自动生成数据库模式(表创build脚本)? 我仍处于原型开发阶段,并预计会频繁更改模式。 我希望能够从注释的代码中指定和更改数据模型。 Grails类似于它从域类生成数据库。

HQL留下了非关联实体的连接

我有两个实体, A和B 他们是相关的,但我不想将关系映射添加到豆。 我们如何使用HQL或条件使用A和B之间A左外连接 ? 有一些解决方法可用于此, 按照此处所述使用Native SQL。 添加一个关系并使用从A中select一个左连接ab 。 我们可以在HQL中做一个内部连接 select * from A a,B b where a.some = b.some 我总是回去这两个选项,有没有其他的select呢? 或者这在不可能?

FetchMode如何在Spring Data JPA中工作?

我在我的项目中有三个模型对象之间的关系(模型和存储库代码片尾) 当我打电话PlaceRepository.findById它会触发三个select查询: ( “SQL”) SELECT * FROM place p where id = arg SELECT * FROM user u where u.id = place.user.id SELECT * FROM city c LEFT OUTER JOIN state s on c.woj_id = s.id where c.id = place.city.id 这是非常不寻常的行为(对我来说)。 据我所知,在阅读Hibernate文档后,应该总是使用JOIN查询。 当FetchType.LAZY更改为Place类中的FetchType.EAGER (具有附加SELECT的查询)时,查询在查询中没有区别,而当FetchType.LAZY更改为FetchType.EAGER (JOIN查询)时, City类也相同。 当我使用CityRepository.findById抑制两个select: SELECT * FROM city c where id = […]

在基于hibernate的应用程序中,我应该包含哪些jar以使用javax.persistence包?

可以从Glassfish项目(glassfish-persistence-api)中获取它,或者可能有一个Hibernate jar?

使用JPA Hibernate自动保存子对象

我有父和子表之间的一对多关系。 在父对象中,我有一个 List<Child> setChilds(List<Child> childs) 我在Child表中还有一个外键。 这个外键是引用数据库中父行的ID。 所以在我的数据库configuration中,这个外键不能为NULL。 此外键也是父表中的主键。 所以我的问题是,我可以通过做这样的事情自动保存子对象: session.save(parent); 我试过以上,但我得到一个数据库错误抱怨Child表中的外键字段不能为NULL。 有没有办法告诉JPA自动将这个外键设置为Child对象,以便它可以自动保存子对象? 提前致谢。

有一个getter时,Hibernate总是需要一个setter吗?

我们有一些用@Column和@Basic注解的Hibernate getter方法。 如果我们没有相应的setter,我们会得到一个exception。 为什么是这样? 在我们的例子中,我们得到的是从getter返回的值(存储在数据库中),setter没有function。 所以我们只是有一个空方法来解决错误条件。

Hibernatevalidation器:@Email接受ask @ stackoverflow为有效的?

我正在使用@Email注释来validation电子邮件地址。 我遇到的问题是它接受诸如ask@stackoverflow作为有效的电子邮件地址的东西。 我想这是因为他们想要支持Intranet地址,但我似乎无法find一个标志,所以它不检查扩展名。 我是否真的需要切换到@Pattern (以及任何对灵活的电子邮件模式的build议),还是我错过了一些东西?