我正在努力将memcache添加到在GAE/J上运行的应用程序.我有一个问题,关于生产内存缓存在值到期时的行为,如果它们的密钥也被删除了.
我能找到最接近回答这个问题的地方是:http://code.google.com/appengine/docs/java/memcache/overview.html#How_Cached_Data_Expires
我知道我不能依赖留在memcache中的价值观; 我不知道,但我想知道的是,是否也删除了映射到这些值的键.
换句话说,如果我这样做
mycache.contains("key")
将值从缓存中推出后,这仍然是真的吗?
旁注:不要认为它有所作为; 但为了以防万一,我正在使用来自memcache服务的异步内存缓存,并像这样得到它:
MemcacheServiceFactory.getAsyncMemcacheService();
我问这个是因为我不是那么典型的
if(cache.get("key") == null)
我从数据存储区返回时存储空值,因此我不会不断查找空值.我确实要小心确保在可能发生变化时移除密钥.因为memcache查找返回null,我假设查询实际上是null; 但我确实确保当其他可能发生变化的查询发生时,null查找被删除.这就是为什么我使用cache.contains("key")而不是cache.get("key") == null
我偶然发现了一个非常烦人的情况:我使用Hibernate和Spring作为我的应用程序的后端,似乎在某些情况下,与特定实体关系的实体不会从DB获取为正常的实体对象,但作为Javassist类型.例如:
我的Campaign实体具有以下关系:
@Entity
@Table(name = "campaign")
public class Campaign implements Serializable {
[..]
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(uniqueConstraints = @UniqueConstraint(columnNames = {
"campaign_id", "dealer_id" }), name = "campaign_has_dealer", joinColumns = { @JoinColumn(name = "campaign_id", nullable = false) }, inverseJoinColumns = { @JoinColumn(name = "dealer_id", nullable = false) })
private List<Dealer> dealers = new ArrayList<Dealer>();
@ManyToMany
// (fetch = FetchType.LAZY)
@JoinTable(uniqueConstraints = @UniqueConstraint(columnNames = {
"campaign_id", "sales_area_id" }), name = "campaign_has_sales_area", joinColumns = { @JoinColumn(name = "campaign_id", nullable = false) }, inverseJoinColumns …Run Code Online (Sandbox Code Playgroud) 我有一个很大的应用程序,我想分解成可管理的模块.我使用spring和Jpa(Hibernate作为提供者).我想出了一个结构,其中我有一个包含所有实体和dao类的核心模块,其他模块使用核心模块来实现持久性,并且每个模块都有自己的一组服务类和控制器.

所有Jpa和spring配置文件都在核心模块中.通过这种设置,我面临着在使用核心模块的模块中自动装配dao bean的问题.所以我的问题是,是否可以从其他模块中的核心模块自动装配bean(或者可能使用跨模块的上下文)?如果有更好的方法,我也愿意接受有关结构的建议.
谢谢
我正在创建一个Play框架应用程序,我需要加载一些数据.该框架(我在1.2.4时完成了一些工作,现在我一直在尝试2.0.3)用于支持创建一个data.yaml可以在运行时加载的文件.
对此的支持似乎已被取消.现在解决这个问题的最佳做法是什么?
Hibernate中是否有一些工具可用于查询查询的查询计划?我可以查看源代码并跟踪连接和急切的提取,并希望我不会错过任何,或者我可以查看SQL日志并尝试将SQL语句与其源匹配,但我想知道是否存在是一种更快的方式.例如,我可以想象一个显示相关类的对象图或带有某种测序符号的ER图.
我有一个带有投影和转换器的 DetachedCriteria 查询,如下所示
criteria = DetachedCriteria.forClass(Report.class, "r");
criteria
.createAlias("template", "t")
.createAlias("constituents", "c")
.setProjection(
Projections.projectionList()
.add(Projections.property("r.reportId").as("reportId"))
.add(Projections.property("r.reportNm").as("reportNm"))
.add(Projections.property("t.templateNm").as("templateNm"))
.add(Projections.property("t.templateTyp").as("templateTyp"))
).setResultTransformer(Transformers.aliasToBean(ReportSummary.class));
Run Code Online (Sandbox Code Playgroud)
然后我从会话中获取 Citeria,现在当我尝试动态添加 orderBy 子句时,即
Session session = entityManager.unwrap(Session.class);
Criteria c = criteria.getExecutableCriteria(session);
Order order = sortDirection.equals("ASC")?
Order.asc(orderByColumnName):Order.desc(orderByColumnName);
c.addOrder(order);
Run Code Online (Sandbox Code Playgroud)
生成的查询包含一个额外的 orderBy 子句,即
order by reportId ASC(NOT REQUIRED ADDED AUTOMATICALLY), order by reportNm ASC
Run Code Online (Sandbox Code Playgroud)
有人可以指导我解决问题吗
如何调试使用JPA 2.0 CriteriaBuilder?构建的查询?有没有办法打印出正在执行的查询?
我使用的开发Web应用程序NetBeans,MySql,GlassFish.我会避免在调试模式下启动MySql,因为它也用于其他应用程序.JPA提供商是EclipseLink.
我有这门课
@Entity
@Table(name = "DB.APPL_SESSION")
@AttributeOverrides({@AttributeOverride(name = "id", column = @Column(name = "APPL_SESSION_ID"))})
@SequenceGenerator(name = "TableSequence", sequenceName = "DB.APPL_SESSION_SQ")
public class AiSession{
@Formula("(select sum(nvl(budg.AMT_OV,budg.AMT)) from DB.BUDGET budg where budg.APPL_SESSION_ID = APPL_SESSION_ID)")
private LocalDate realSessionStartDate;
Run Code Online (Sandbox Code Playgroud)
在上面的公式中,我使用DB.BUDGET对象和当前对象id(APPL_SESSION_ID).但现在我只想使用AidApplicantYearSession类中的下一个成员变量(StartDate)
@Basic
@Temporal(TemporalType.DATE)
@Column(name = "START_OV_DT")
private Date overrideStartDate;
Run Code Online (Sandbox Code Playgroud)
我应该如何编写一个看起来像上面的公式,但只使用对象的成员变量?我想出来了
@Formula("(select START_OV_DT from DB.APPL_SESSION)")
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?这两个公式的逻辑完全不同.
我使用JPA注释(Hibernate实现)来初始化我的数据库模式.我遵循文章DYNAMIC DATASOURCE ROUTING来实现动态数据源路由类.
但是,我有两个数据库(映射2个数据源).我将第一个数据源设置为defaultTargetDataSource.然后开始我的申请.当我的应用程序尝试访问第二个数据源时,它告诉我该表不存在.似乎AbstractRoutingDataSource只为默认数据源创建表,但其他数据源.
有没有想法在所有数据库中创建模式?
PS.我正在使用AbstractRoutingDataSource来实现我自己的数据库分片.
有没有办法将全文搜索与spring数据jpa集成?我习惯在我的项目中使用hibernate搜索.
Hibernate搜索(Hibernate Search通过将Hibernate Core与Apache Lucene™搜索引擎的功能相结合,将全文搜索引擎的强大功能带入持久性域模型.)可以正常使用传统的jpa.
现在我将转向spring data jpa.实现全文搜索的最佳做法是什么?
hibernate ×6
java ×5
spring ×4
orm ×2
autowired ×1
criteria-api ×1
eclipselink ×1
formula ×1
javassist ×1
jpa ×1
memcached ×1
mysql ×1
performance ×1