Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tolitius/money-making-project
A project based on Spring and Hibernate that makes money
https://github.com/tolitius/money-making-project
hibernate spring
Last synced: 6 days ago
JSON representation
A project based on Spring and Hibernate that makes money
- Host: GitHub
- URL: https://github.com/tolitius/money-making-project
- Owner: tolitius
- Created: 2010-09-26T22:31:16.000Z (about 14 years ago)
- Default Branch: master
- Last Pushed: 2022-02-09T23:23:07.000Z (almost 3 years ago)
- Last Synced: 2024-05-08T19:11:14.231Z (6 months ago)
- Topics: hibernate, spring
- Language: Java
- Homepage:
- Size: 29.3 KB
- Stars: 15
- Watchers: 3
- Forks: 12
- Open Issues: 4
-
Metadata Files:
- Readme: README.markdown
Awesome Lists containing this project
README
> while this project is many years old, and only runs with a pre 11 Java, the principles still apply
## What is "Money Making Project"? ##
A very simple example on how to use Spring and Hibernate together
## Who would need such an example? ##
There are plenty of good examples from Spring and Hibernate themselves. This one is aimed to bring the two together mostly for people who "heard" things about the two, read about it, but having a "practical difficulty" to combine them.
## What's with a title!?
Well, if you take a look at APIs, you'll see a "MoneyMakingBusinessService" with a "makeMoney" method. So technically, each time you run "CleverMoneyMakingBusinessServiceIntegrationTest", you'd be making some money.
And, of course, if you master Spring & Hibernate, and find yourself a gig, you'll be making even more.
## What's inside
Spring and Hibernate based project that demos simple things such as:
### A way to structure a project
Maven based structure ( hence can be easily used by gradle ). Configuration and property files organized under "META-INF/conf", "META-INF/props", etc..
### A way to separate Spring configs
"tx-spring-config.xml", "persistence-spring-config.xml", "service-spring-config.xml", "repository-spring-config.xml" and "application-context.xml" that includes them all
### Properties via PropertyPlaceholderConfigurer
### Hibernate overall configuration file
That is injected into AnnotationSessionFactoryBean
### Hibernate Named Queries
That are linked to the Hibernate overall config ( <mapping resource="META-INF/conf/hibernate/mapping/startup-bank-named-queries.xml"/> )
### Spring's DAO / Hibernate Exception Translation
Via @Repository and "PersistenceExceptionTranslationPostProcessor"
### Simple CRUD Repository
public interface MoneyRepository {
public void make( MoneyRoll moneyRoll ); // C
public MoneyRoll find( Long id ); // R
public void update( MoneyRoll moneyRoll ); // U
public void takeOut( MoneyRoll moneyRoll ); // D
}with a Hibernate based implementation
### Transaction Management with Spring AOP
Declarative, on a Service Level, using "aop:config", "tx:advice" namespaces
### Spring Testing
With SpringJUnit4ClassRunner, ContextConfiguration, etc..
### Using Embeded in-memory H2 Database for Testing
### Hibernate Logging
Most useful hibernate "log4j.logger" properties
### Demoing how important Transaction is for Hibernate Sessions
"HibernateSessionNotBoundToThreadIntegrationTest" for the second (after LazyInitializationException ) most common Hibernate exception: "No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here"
###### _TODO: provide some JPA examples, although, it most likely deserves a separate project to keep things simple_