Hibernate auto commit without any DAO request
I'm currently reading code from another guy. I saw that he doesn't make any explicit request to update DB
but it does update the entity. Please check below pseudo code
:
@Transactional(propagation = Propagation.REQUIRED, readOnly = false)
public void updateFoo(long fooId) {
// Get foo instance from DB, foo has status = 0
Foo foo = fooDAO.getFoo(fooId);
foo.setStatus(1);
// There is no call to DAO layer from here
}
I checked from My SQL
, foo
is updated without any session.save(foo)
or session.update(foo)
Normally, I would call some thing like this in FooDAO
layer
sessionFactory.getCurrentSession().update(foo);
How's that possible? I suspect that the Transaction
auto commit
POJO Object. Please let me know how? And why would anyone do that, is this make code harder to read?
mysql spring hibernate spring-transactions
add a comment |
I'm currently reading code from another guy. I saw that he doesn't make any explicit request to update DB
but it does update the entity. Please check below pseudo code
:
@Transactional(propagation = Propagation.REQUIRED, readOnly = false)
public void updateFoo(long fooId) {
// Get foo instance from DB, foo has status = 0
Foo foo = fooDAO.getFoo(fooId);
foo.setStatus(1);
// There is no call to DAO layer from here
}
I checked from My SQL
, foo
is updated without any session.save(foo)
or session.update(foo)
Normally, I would call some thing like this in FooDAO
layer
sessionFactory.getCurrentSession().update(foo);
How's that possible? I suspect that the Transaction
auto commit
POJO Object. Please let me know how? And why would anyone do that, is this make code harder to read?
mysql spring hibernate spring-transactions
2
That's the basic principle of JPA/Hibernate. Managed entities are... managed. Their state is persisted automatically. This is idiomatic JPA code. Calling save() or update() would just show that the author doesn't understand how JPA/Hibernate works.
– JB Nizet
Nov 26 '18 at 8:27
@JB Nizet: sorry for my lack of understanding, could you let me know: what's the point of callupdate()
when it will be updated anyway
– nguyentaijs
Nov 26 '18 at 8:28
1
Just read the javadoc: Update the persistent instance with the identifier of the given detached instance. Detached instances, by definition, are not managed. So if you have a detached instance containing modifications, you can update the database by attaching it using the update() method.
– JB Nizet
Nov 26 '18 at 8:32
add a comment |
I'm currently reading code from another guy. I saw that he doesn't make any explicit request to update DB
but it does update the entity. Please check below pseudo code
:
@Transactional(propagation = Propagation.REQUIRED, readOnly = false)
public void updateFoo(long fooId) {
// Get foo instance from DB, foo has status = 0
Foo foo = fooDAO.getFoo(fooId);
foo.setStatus(1);
// There is no call to DAO layer from here
}
I checked from My SQL
, foo
is updated without any session.save(foo)
or session.update(foo)
Normally, I would call some thing like this in FooDAO
layer
sessionFactory.getCurrentSession().update(foo);
How's that possible? I suspect that the Transaction
auto commit
POJO Object. Please let me know how? And why would anyone do that, is this make code harder to read?
mysql spring hibernate spring-transactions
I'm currently reading code from another guy. I saw that he doesn't make any explicit request to update DB
but it does update the entity. Please check below pseudo code
:
@Transactional(propagation = Propagation.REQUIRED, readOnly = false)
public void updateFoo(long fooId) {
// Get foo instance from DB, foo has status = 0
Foo foo = fooDAO.getFoo(fooId);
foo.setStatus(1);
// There is no call to DAO layer from here
}
I checked from My SQL
, foo
is updated without any session.save(foo)
or session.update(foo)
Normally, I would call some thing like this in FooDAO
layer
sessionFactory.getCurrentSession().update(foo);
How's that possible? I suspect that the Transaction
auto commit
POJO Object. Please let me know how? And why would anyone do that, is this make code harder to read?
mysql spring hibernate spring-transactions
mysql spring hibernate spring-transactions
asked Nov 26 '18 at 8:24
nguyentaijsnguyentaijs
908
908
2
That's the basic principle of JPA/Hibernate. Managed entities are... managed. Their state is persisted automatically. This is idiomatic JPA code. Calling save() or update() would just show that the author doesn't understand how JPA/Hibernate works.
– JB Nizet
Nov 26 '18 at 8:27
@JB Nizet: sorry for my lack of understanding, could you let me know: what's the point of callupdate()
when it will be updated anyway
– nguyentaijs
Nov 26 '18 at 8:28
1
Just read the javadoc: Update the persistent instance with the identifier of the given detached instance. Detached instances, by definition, are not managed. So if you have a detached instance containing modifications, you can update the database by attaching it using the update() method.
– JB Nizet
Nov 26 '18 at 8:32
add a comment |
2
That's the basic principle of JPA/Hibernate. Managed entities are... managed. Their state is persisted automatically. This is idiomatic JPA code. Calling save() or update() would just show that the author doesn't understand how JPA/Hibernate works.
– JB Nizet
Nov 26 '18 at 8:27
@JB Nizet: sorry for my lack of understanding, could you let me know: what's the point of callupdate()
when it will be updated anyway
– nguyentaijs
Nov 26 '18 at 8:28
1
Just read the javadoc: Update the persistent instance with the identifier of the given detached instance. Detached instances, by definition, are not managed. So if you have a detached instance containing modifications, you can update the database by attaching it using the update() method.
– JB Nizet
Nov 26 '18 at 8:32
2
2
That's the basic principle of JPA/Hibernate. Managed entities are... managed. Their state is persisted automatically. This is idiomatic JPA code. Calling save() or update() would just show that the author doesn't understand how JPA/Hibernate works.
– JB Nizet
Nov 26 '18 at 8:27
That's the basic principle of JPA/Hibernate. Managed entities are... managed. Their state is persisted automatically. This is idiomatic JPA code. Calling save() or update() would just show that the author doesn't understand how JPA/Hibernate works.
– JB Nizet
Nov 26 '18 at 8:27
@JB Nizet: sorry for my lack of understanding, could you let me know: what's the point of call
update()
when it will be updated anyway– nguyentaijs
Nov 26 '18 at 8:28
@JB Nizet: sorry for my lack of understanding, could you let me know: what's the point of call
update()
when it will be updated anyway– nguyentaijs
Nov 26 '18 at 8:28
1
1
Just read the javadoc: Update the persistent instance with the identifier of the given detached instance. Detached instances, by definition, are not managed. So if you have a detached instance containing modifications, you can update the database by attaching it using the update() method.
– JB Nizet
Nov 26 '18 at 8:32
Just read the javadoc: Update the persistent instance with the identifier of the given detached instance. Detached instances, by definition, are not managed. So if you have a detached instance containing modifications, you can update the database by attaching it using the update() method.
– JB Nizet
Nov 26 '18 at 8:32
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53477134%2fhibernate-auto-commit-without-any-dao-request%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53477134%2fhibernate-auto-commit-without-any-dao-request%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
That's the basic principle of JPA/Hibernate. Managed entities are... managed. Their state is persisted automatically. This is idiomatic JPA code. Calling save() or update() would just show that the author doesn't understand how JPA/Hibernate works.
– JB Nizet
Nov 26 '18 at 8:27
@JB Nizet: sorry for my lack of understanding, could you let me know: what's the point of call
update()
when it will be updated anyway– nguyentaijs
Nov 26 '18 at 8:28
1
Just read the javadoc: Update the persistent instance with the identifier of the given detached instance. Detached instances, by definition, are not managed. So if you have a detached instance containing modifications, you can update the database by attaching it using the update() method.
– JB Nizet
Nov 26 '18 at 8:32