mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
hibernate tweaks
This commit is contained in:
@@ -269,26 +269,26 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
||||
public void markFeedEntries(User user, Feed feed, Date olderThan) {
|
||||
List<FeedEntryStatus> statuses = findByFeed(feed, user, true,
|
||||
ReadingOrder.desc, false);
|
||||
update(markList(statuses, olderThan));
|
||||
saveOrUpdate(markList(statuses, olderThan));
|
||||
}
|
||||
|
||||
public void markCategoryEntries(User user, List<FeedCategory> categories,
|
||||
Date olderThan) {
|
||||
List<FeedEntryStatus> statuses = findByCategories(categories, user,
|
||||
true, ReadingOrder.desc, false);
|
||||
update(markList(statuses, olderThan));
|
||||
saveOrUpdate(markList(statuses, olderThan));
|
||||
}
|
||||
|
||||
public void markStarredEntries(User user, Date olderThan) {
|
||||
List<FeedEntryStatus> statuses = findStarred(user, ReadingOrder.desc,
|
||||
false);
|
||||
update(markList(statuses, olderThan));
|
||||
saveOrUpdate(markList(statuses, olderThan));
|
||||
}
|
||||
|
||||
public void markAllEntries(User user, Date olderThan) {
|
||||
List<FeedEntryStatus> statuses = findAll(user, true, ReadingOrder.desc,
|
||||
false);
|
||||
update(markList(statuses, olderThan));
|
||||
saveOrUpdate(markList(statuses, olderThan));
|
||||
}
|
||||
|
||||
private List<FeedEntryStatus> markList(List<FeedEntryStatus> statuses,
|
||||
|
||||
@@ -34,44 +34,24 @@ public abstract class GenericDAO<T extends AbstractModel> {
|
||||
builder = em.getCriteriaBuilder();
|
||||
}
|
||||
|
||||
public void save(T object) {
|
||||
em.persist(object);
|
||||
}
|
||||
|
||||
public void save(Collection<T> objects) {
|
||||
for (Object object : objects) {
|
||||
em.persist(object);
|
||||
}
|
||||
}
|
||||
|
||||
public void update(Collection<T> objects) {
|
||||
for (Object object : objects) {
|
||||
em.merge(object);
|
||||
}
|
||||
}
|
||||
|
||||
public void update(T... objects) {
|
||||
update(Arrays.asList(objects));
|
||||
}
|
||||
|
||||
public void saveOrUpdate(Collection<? extends AbstractModel> models) {
|
||||
int i = 0;
|
||||
for (AbstractModel model : models) {
|
||||
if (model.getId() == null) {
|
||||
em.persist(model);
|
||||
} else {
|
||||
em.merge(model);
|
||||
}
|
||||
|
||||
if (i % 20 == 0) {
|
||||
em.flush();
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
public void saveOrUpdate(AbstractModel... models) {
|
||||
for (AbstractModel model : models) {
|
||||
if (model.getId() == null) {
|
||||
em.persist(model);
|
||||
} else {
|
||||
em.merge(model);
|
||||
}
|
||||
}
|
||||
saveOrUpdate(Arrays.asList(models));
|
||||
}
|
||||
|
||||
public void delete(T object) {
|
||||
|
||||
@@ -94,7 +94,7 @@ public class FeedRefreshTaskGiver {
|
||||
map.put(f.getId(), f);
|
||||
}
|
||||
|
||||
feedDAO.update(map.values());
|
||||
feedDAO.saveOrUpdate(map.values());
|
||||
}
|
||||
|
||||
public void giveBack(Feed feed) {
|
||||
|
||||
@@ -64,7 +64,7 @@ public class OPMLImporter {
|
||||
}
|
||||
category.setParent(parent);
|
||||
category.setUser(user);
|
||||
feedCategoryDAO.save(category);
|
||||
feedCategoryDAO.saveOrUpdate(category);
|
||||
}
|
||||
|
||||
List<Outline> children = outline.getChildren();
|
||||
|
||||
@@ -72,7 +72,7 @@ public class SubscriptionHandler {
|
||||
&& StringUtils.contains(message, pushpressError)) {
|
||||
String[] tokens = message.split(" ");
|
||||
feed.setPushTopic(tokens[tokens.length - 1]);
|
||||
feedDAO.update(feed);
|
||||
feedDAO.saveOrUpdate(feed);
|
||||
log.debug("handled pushpress subfeed {} : {}", topic,
|
||||
feed.getPushTopic());
|
||||
} else {
|
||||
|
||||
@@ -17,7 +17,7 @@ public class FeedEntryService {
|
||||
FeedEntryStatus status = feedEntryStatusDAO.findById(user, entryId);
|
||||
if (status != null) {
|
||||
status.setRead(read);
|
||||
feedEntryStatusDAO.update(status);
|
||||
feedEntryStatusDAO.saveOrUpdate(status);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ public class FeedEntryService {
|
||||
FeedEntryStatus status = feedEntryStatusDAO.findById(user, entryId);
|
||||
if (status != null) {
|
||||
status.setStarred(starred);
|
||||
feedEntryStatusDAO.update(status);
|
||||
feedEntryStatusDAO.saveOrUpdate(status);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ public class FeedService {
|
||||
feed = new Feed();
|
||||
feed.setUrl(url);
|
||||
feed.setUrlHash(DigestUtils.sha1Hex(url));
|
||||
feedDAO.save(feed);
|
||||
feedDAO.saveOrUpdate(feed);
|
||||
}
|
||||
return feed;
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ public class FeedSubscriptionService {
|
||||
status.setSubscription(sub);
|
||||
statuses.add(status);
|
||||
}
|
||||
feedEntryStatusDAO.save(statuses);
|
||||
feedEntryStatusDAO.saveOrUpdate(statuses);
|
||||
}
|
||||
taskGiver.add(feed);
|
||||
return feed;
|
||||
|
||||
@@ -56,7 +56,7 @@ public class UserService {
|
||||
user.getPassword(), user.getSalt());
|
||||
if (authenticated) {
|
||||
user.setLastLogin(Calendar.getInstance().getTime());
|
||||
userDAO.update(user);
|
||||
userDAO.saveOrUpdate(user);
|
||||
return user;
|
||||
}
|
||||
}
|
||||
@@ -85,7 +85,7 @@ public class UserService {
|
||||
for (Role role : roles) {
|
||||
user.getRoles().add(new UserRole(user, role));
|
||||
}
|
||||
userDAO.save(user);
|
||||
userDAO.saveOrUpdate(user);
|
||||
return user;
|
||||
}
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ public class NextUnreadRedirectPage extends WebPage {
|
||||
FeedEntryStatus status = Iterables.getFirst(statuses, null);
|
||||
String url = status.getEntry().getUrl();
|
||||
status.setRead(true);
|
||||
feedEntryStatusDAO.update(status);
|
||||
feedEntryStatusDAO.saveOrUpdate(status);
|
||||
throw new RedirectToUrlException(url);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ public class PasswordRecoveryCallbackPage extends BasePage {
|
||||
user.setApiKey(userService.generateApiKey(user));
|
||||
user.setRecoverPasswordToken(null);
|
||||
user.setRecoverPasswordTokenDate(null);
|
||||
userDAO.update(user);
|
||||
userDAO.saveOrUpdate(user);
|
||||
info("Password saved.");
|
||||
} else {
|
||||
error("Passwords do not match.");
|
||||
|
||||
@@ -41,7 +41,7 @@ public class PasswordRecoveryPage extends BasePage {
|
||||
.randomUUID().toString()));
|
||||
user.setRecoverPasswordTokenDate(Calendar.getInstance()
|
||||
.getTime());
|
||||
userDAO.update(user);
|
||||
userDAO.saveOrUpdate(user);
|
||||
mailService.sendMail(user, "Password recovery",
|
||||
buildEmailContent(user));
|
||||
info("Email sent.");
|
||||
|
||||
@@ -68,11 +68,11 @@ public class AdminREST extends AbstractResourceREST {
|
||||
}
|
||||
user.setEmail(userModel.getEmail());
|
||||
user.setDisabled(!userModel.isEnabled());
|
||||
userDAO.update(user);
|
||||
userDAO.saveOrUpdate(user);
|
||||
|
||||
Set<Role> roles = userRoleDAO.findRoles(user);
|
||||
if (userModel.isAdmin() && !roles.contains(Role.ADMIN)) {
|
||||
userRoleDAO.save(new UserRole(user, Role.ADMIN));
|
||||
userRoleDAO.saveOrUpdate(new UserRole(user, Role.ADMIN));
|
||||
} else if (!userModel.isAdmin() && roles.contains(Role.ADMIN)) {
|
||||
if (StartupBean.USERNAME_ADMIN.equals(user.getName())) {
|
||||
return Response
|
||||
|
||||
@@ -208,7 +208,7 @@ public class CategoryREST extends AbstractResourceREST {
|
||||
parent.setId(Long.valueOf(parentId));
|
||||
cat.setParent(parent);
|
||||
}
|
||||
feedCategoryDAO.save(cat);
|
||||
feedCategoryDAO.saveOrUpdate(cat);
|
||||
return Response.ok().build();
|
||||
}
|
||||
|
||||
@@ -227,7 +227,7 @@ public class CategoryREST extends AbstractResourceREST {
|
||||
for (FeedSubscription sub : subs) {
|
||||
sub.setCategory(null);
|
||||
}
|
||||
feedSubscriptionDAO.update(subs);
|
||||
feedSubscriptionDAO.saveOrUpdate(subs);
|
||||
List<FeedCategory> categories = feedCategoryDAO
|
||||
.findAllChildrenCategories(getUser(), cat);
|
||||
for (FeedCategory child : categories) {
|
||||
@@ -236,7 +236,7 @@ public class CategoryREST extends AbstractResourceREST {
|
||||
child.setParent(null);
|
||||
}
|
||||
}
|
||||
feedCategoryDAO.update(categories);
|
||||
feedCategoryDAO.saveOrUpdate(categories);
|
||||
|
||||
feedCategoryDAO.delete(cat);
|
||||
return Response.ok().build();
|
||||
@@ -297,12 +297,12 @@ public class CategoryREST extends AbstractResourceREST {
|
||||
for (int i = 0; i < categories.size(); i++) {
|
||||
categories.get(i).setPosition(i);
|
||||
}
|
||||
feedCategoryDAO.update(categories);
|
||||
feedCategoryDAO.saveOrUpdate(categories);
|
||||
} else {
|
||||
feedCategoryDAO.update(category);
|
||||
feedCategoryDAO.saveOrUpdate(category);
|
||||
}
|
||||
|
||||
feedCategoryDAO.update(category);
|
||||
feedCategoryDAO.saveOrUpdate(category);
|
||||
|
||||
return Response.ok(Status.OK).build();
|
||||
}
|
||||
@@ -320,7 +320,7 @@ public class CategoryREST extends AbstractResourceREST {
|
||||
return Response.status(Status.NOT_FOUND).build();
|
||||
}
|
||||
category.setCollapsed(req.isCollapse());
|
||||
feedCategoryDAO.update(category);
|
||||
feedCategoryDAO.saveOrUpdate(category);
|
||||
|
||||
return Response.ok(Status.OK).build();
|
||||
}
|
||||
|
||||
@@ -359,9 +359,9 @@ public class FeedREST extends AbstractResourceREST {
|
||||
for (int i = 0; i < subs.size(); i++) {
|
||||
subs.get(i).setPosition(i);
|
||||
}
|
||||
feedSubscriptionDAO.update(subs);
|
||||
feedSubscriptionDAO.saveOrUpdate(subs);
|
||||
} else {
|
||||
feedSubscriptionDAO.update(subscription);
|
||||
feedSubscriptionDAO.saveOrUpdate(subscription);
|
||||
}
|
||||
|
||||
return Response.ok(Status.OK).build();
|
||||
|
||||
@@ -67,7 +67,7 @@ public class PubSubHubbubCallbackREST {
|
||||
feed.getPushTopic());
|
||||
feed.setPushLastPing(Calendar.getInstance().getTime());
|
||||
}
|
||||
feedDAO.update(feeds);
|
||||
feedDAO.saveOrUpdate(feeds);
|
||||
return Response.ok(challenge).build();
|
||||
} else {
|
||||
log.debug("rejecting callback: no push info for {}", topic);
|
||||
|
||||
@@ -134,7 +134,7 @@ public class UserREST extends AbstractResourceREST {
|
||||
if (request.isNewApiKey()) {
|
||||
user.setApiKey(userService.generateApiKey(user));
|
||||
}
|
||||
userDAO.update(user);
|
||||
userDAO.saveOrUpdate(user);
|
||||
return Response.ok().build();
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,10 @@
|
||||
<property name="hibernate.dialect" value="${jpa.dialect}" />
|
||||
<property name="hibernate.default_batch_fetch_size" value="100" />
|
||||
|
||||
<property name="hibernate.jdbc.batch_size" value="20" />
|
||||
<property name="hibernate.order_inserts" value="true" />
|
||||
<property name="hibernate.order_updates" value="true" />
|
||||
|
||||
<property name="hibernate.cache.region.factory_class"
|
||||
value="org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory" />
|
||||
|
||||
|
||||
Reference in New Issue
Block a user