Extensible, low overhead, high performance Java persistence framework
I look forward to building a website / application The class model has about 100 objects and is not particularly complex
The website needs to be built to handle about 30000 concurrent users, but it should be able to handle more
I want to use an existing persistence framework instead of writing my own JDBC to access the database
I have no choice but to use relational database
I want it to have some form of caching, and I also want to be able to customize SQL, because this is usually necessary for performance tuning
What persistence framework should I use for any suggestions?
Update: Thank you In this case, I think the ability to write SQL code manually is better than If you have access to it, you can make some concurrency adjustments Although I agree that you can access it in Hibernate / JPA, it is not an exception to the rule Mybatis is also a more lightweight and less "magical" persistence framework In addition, for performance and expansion reasons, I don't think it's wise to use too many foreign keys to handle collections, which are managed by the persistence framework, so I may not use this function in hibernate This will allow me to fragment the database if necessary I also think mybatis may be a more easily implemented persistence framework AFAIK, for example, has no transparent persistence Your answer has confirmed that there is no other persistence framework that better meets these requirements
Solution
If you want manually optimized SQL, I recommend using mybatis (formerly known as ibatis) It uses handwritten SQL provided by you to handle JDBC mechanism and object column mapping for you
What it won't do for you is object relational mapping (i.e. automatic processing of associations and collections) If this is more important to you, a JPA implementation such as eclipse link or hibernate is an obvious choice These can also handle custom SQL, but it is more cumbersome than mybatis
Both should be able to handle your load requirements without problems - the problem is that your database can handle it