Commit Graph

83 Commits

Author SHA1 Message Date
Oliver Gierke
fbc271a83a DATAJDBC-106 - Polishing.
Moved annotation processing of @Table and @Column into metamodel classes so that the NamingStrategy is only responsible for generic fallbacks. Allow @Column to be used as meta-annotation.
2018-05-18 13:57:46 +02:00
Oliver Gierke
eab63d8848 DATAJDBC-137 - Cleanups in the repository and repository.support packages. 2018-05-18 12:30:38 +02:00
Jens Schauder
fe98964d72 DATAJDBC-216 - Polishing.
Simplified code by using constructor injection plus Lombok.
Removed superfluous handling of BeforeSave events with null entity.

Original pull request: #71.
2018-05-18 07:53:45 +02:00
Kazuki Shimizu
0c863eb180 DATAJDBC-216 - Support @Id property primitive type for auditing.
The new check is now properly done using Spring Data meta Informationen.

Original pull request: #71.
2018-05-18 07:52:02 +02:00
Jens Schauder
46a07ac9f7 DATAJDBC-106 - Polishing.
Formatting and Javadoc.

Original pull request: #65
2018-05-17 16:07:57 +02:00
Kazuki Shimizu
cd7403907a DATAJDBC-106 - Support to specify a database object names using annotations.
@Table and @Column annotation added for configuring table and column names.

Original pull request: #65.
2018-05-17 16:06:40 +02:00
Oliver Gierke
35fa0d184c DATAJDBC-212 - Adapt to SpEL extension API changes in Spring Data Commons.
Related tickets: DATACMNS-1260.
2018-05-15 11:10:08 +02:00
Jens Schauder
41e31b1916 DATAJDBC-201 - Reduced logging for builds.
Set logging level to WARN.
Removed a System.out call.

The detail loggers are still in the logback.xml as comments to be used for debugging and demonstration purposes.
2018-04-17 15:37:28 +02:00
Jens Schauder
53eea0202a DATAJDBC-204 - Polishing.
Extracted ApplicationContext and Repository construction into method in order to make the actual test stand out more.
Split a test in two.
JavaDoc.
Code formatting.
Removed access modifiers in tests.
2018-04-17 13:07:24 +02:00
Kazuki Shimizu
92cd333854 DATAJDBC-204 - Support for annotation based auditing.
When enabled by using @EnableJdbcAuditing entities will get properties annotated with

* @CreatedBy
* @CreatedDate
* @LastModifiedBy
* @LastModifiedDate

updated when saved.

Original pull request: #64.
2018-04-17 12:54:29 +02:00
Jens Schauder
cc477f8c89 DATAJDBC-200 - Renamed Events to have an 'Event' suffix.
Original pull request: #60.
2018-04-13 12:06:56 +02:00
Jens Schauder
3f89062bc1 DATAJDBC-199 - Fix @since JavaDoc comments. 2018-04-12 16:32:25 +02:00
Mark Paluch
eb0f62181e DATAJDBC-197 - Polishing.
Rename AfterCreation event to AfterLoadEvent to align with other Spring Data modules. Add missing generics. Remove since tags pointing to version 2.0. Slightly tweak tests.

Original pull request: #58.
2018-04-11 16:19:37 +02:00
Jens Schauder
fbac3a5529 DATAJDBC-197 - Repositories find methods now emit AfterLoadEvents as intended.
Event publishing moved into the JdbcEntityTemplate in order to ensure events for AggregateRoots.

Removed superfluous AggregateChange from AfterCreation event.

Original pull request: #58.
2018-04-11 16:19:12 +02:00
Jens Schauder
dba9d3f4ee DATAJDBC-195 - SqlGenerator now uses upper ase key words. 2018-04-10 10:30:23 +02:00
Jens Schauder
c7958f82a3 DATAJDBC-178 - Polishing.
Renamed MyBatisNamingStrategy into NamespaceStrategy.
This avoids the confusion with the existing NamingStrategy.

Introduced a default instance.
Added a method creating a proper DataAccessStrategy with a NamespaceStrategy.

JavaDoc.

Original pull request: #44.
2018-04-03 14:35:43 +02:00
Kazuki Shimizu
45a6d3467a DATAJDBC-178 - Allow customizing the MyBatis namespace.
The MyBatis namespace used can now be customised by providing a NamespaceStrategy to the MyBatisDataAccessStrategy.

Original pull request: #44.
2018-04-03 14:26:03 +02:00
Christoph Strobl
db2b44db63 DATAJDBC-155 - Polishing.
Update Javadoc, assert state, default nullable properties in afterPropertiesSets and add tests.

Original pull request: #54.
2018-03-27 14:37:24 +02:00
Jens Schauder
aaae9a5f5c DATAJDBC-155 - Simplified construction of JdbcRepositoryFactory.
Made the DefaultDataAccessStrategy actually the default for JdbcRepositoryFactoryBean.
Therefore the injection of a strategy is optional.

Simplified constructors of DefaultDataAccessStrategy.
Created factory method to construct a correct DataAccessStrategy for use with MyBatis.

Did some untangling in the test application context configurations.

Original pull request: #54.
2018-03-27 14:36:07 +02:00
Jens Schauder
e477d763c1 DATAJDBC-189 - Polishing.
Removed DefaultNamingStrategy since we don't have GA release breaking APIs is still ok.
Introduced an instance of NamingStrategy so we don't have to create a new class whereever we just want the default implementation.

JavaDoc.
Formatting

Original pull request: #36.
2018-03-23 14:11:26 +01:00
Michael J. Simons
a6e4380789 DATAJDBC-189 - Move default implementation to NamingStrategy
This makes it nicer to overwrite certain aspects with a lambda instead of an anonymous class. Brings the naming strategy in line with pairs like WebMvcConfigurer / WebMvcConfigurerAdapter.

Original pull request: #36.
2018-03-23 13:00:40 +01:00
Jens Schauder
b1115833ab DATAJDBC-184 - Polishing.
Minor changes to JavaDoc and formatting.

Original pull request: #49.
2018-03-23 12:47:38 +01:00
Kazuki Shimizu
924bb55394 DATAJDBC-184 - Support the delimiter character naming strategy.
Original pull request: #49.
2018-03-23 12:45:06 +01:00
Jens Schauder
46f65149b8 DATAJDBC-186 - Polishing.
JavaDoc.
2018-03-21 11:45:11 -05:00
Jens Schauder
f7274a2efa DATAJDBC-186 - Removed requirement for id properties.
It is now ok for an entity to be “new” after saving.
We now only check that an entity is not new when the id is provided by the database.
If in such a case the entity is still “new” after saving it basically means obtaining the id from JDBC and setting it in the entity failed.

Removed need for entities in maps to have an id.

Together these changes simplify the requirements for Map values, which now can be value objects.
2018-03-21 11:44:59 -05:00
Jens Schauder
8885ce342b DATAJDBC-183 - Polishing.
Removed calls to System.out.
Formatting.
Import order.
2018-03-21 11:42:58 -05:00
Jens Schauder
cb302e90a6 DATAJDBC-183 - Using dedicated class for handling map entries.
Instead of using Map.Entry we now use a dedicated class to hold key and value of a map entry.
This avoids side effects from the implementation of Map.Entry.

Replaced call to saveReferencedEntities with insertReferencedEntities which is simpler but equivalent since referenced entities always get only inserted, never updated.

Removed superfluous methods resulting from that change.
2018-03-21 11:42:46 -05:00
Jens Schauder
31eeba743f DATAJDBC-142 - Using getName instead of getColumnName for constructing PropertyPaths. 2018-03-21 11:40:18 -05:00
Jens Schauder
964f319ae6 DATAJDBC-166 - Polishing.
Formatting.
Import order.
Use of AssertJ.
2018-03-21 11:37:32 -05:00
Jens Schauder
a2b7699256 DATAJDBC-166 - Allow registration of RowMappers based on result type.
RowMapper can be configured either via the @Query(rowMapperClass = …​.) or by registerign a RowMapperMap bean and register RowMapper per method return type.

                @Bean
                RowMapperMap rowMappers() {
                        return new ConfigurableRowMapperMap() //
                                        .register(Person.class, new PersonRowMapper()) //
                                        .register(Address.class, new AddressRowMapper());
                }

When determining the RowMapper to use for a method the following steps are followed based on the return type of the method:

1. If the type is a simple type no RowMapper is used. Instead the query is expected to return a single row with a single column and a conversion to the return type is applied to that value.

2. The entity classes in the RowMapperMap are iterated until one is found that is a superclass or interface of the return type in question. The RowMapper registered for that class is used. Iterating happens in the order of registration, so make sure to register more general types after specific ones.

If applicable wrapper type like collections or Optional are unwrapped. So a return type of Optional<Person> will use the type Person in the steps above.
2018-03-21 11:37:05 -05:00
Jens Schauder
18bf6ca77c DATAJDBC-181 - Use NamingStrategy for instantiating entities.
The ResultSetParameterValueProvider uses the relevant property for a requested parameter in order to obtain the proper column name to use.

Improved mocking of ResultSets in tests to actually fail when a non existing column gets requested instead of just returning null.
2018-03-09 09:18:28 -06:00
Jens Schauder
043bd4de35 DATAJDBC-165 - Allows configuration of custom RowMapper on @Query annotation. 2018-03-09 09:15:31 -06:00
Jens Schauder
5f6a44d00a DATAJDBC-182 - Polishing.
Extracted method to maintain a single level of abstraction.
Added description to assertion that wasn't obvious to me.
Added JavaDoc on existing method.
Commented repository methods in test with issue ids to ease understanding the purpose of each method.
2018-03-09 10:19:55 +01:00
Kazuki Shimizu
73fe1ca93b DATAJDBC-182 - Support modifying annotated queries.
Added @Modify for marking queries that perform DML or DDL.
Modifying queries with return type boolean or Boolean return wether the number of updated rows is greater 0.
This shouldn't be used for DML statements since it will always return false.

Original pull request: ##48.
2018-03-09 10:18:14 +01:00
Jens Schauder
ac4da66d99 DATAJDBC-175 - Polishing.
Code formatting.
2018-03-07 16:14:18 +01:00
Kazuki Shimizu
369ca6d599 DATAJDBC-175 - Supports simple types as return type for annotated methods.
Original pull request: #43.
2018-03-07 16:01:32 +01:00
Jens Schauder
1603296385 DATAJDBC-130 - Polishing.
Formatting.
Tiny fixes in JavaDoc.
Fixed some type parameters.
Replaced concrete classes with interfaces.
2018-02-22 13:05:52 -06:00
Jens Schauder
f5de195768 DATAJDBC-130 - Support entities with List valued properties. 2018-02-22 13:05:39 -06:00
Jens Schauder
7ed2ed7d7e DATAJDBC-172 - Polishing.
Formatting.
Added @author tag.
2018-02-08 15:30:04 +01:00
Kazuki Shimizu
6f6499026a DATAJDBC-172 - Support entity type, Optional and Stream as return type of @Query methods.
Original pull request: #40.
2018-02-08 15:27:30 +01:00
Jens Schauder
9a90d7e09b DATAJDBC-161 - Polishing.
Removed second constructor and made tests use the new constructor.
Changed parameter type to the interface SqlSession.
Added some JavaDoc.
2018-02-06 14:22:39 +01:00
Kazuki Shimizu
66556f93c4 DATAJDBC-161 - Share a SqlSession between statements.
Original pull request: #29.
2018-02-06 14:21:34 +01:00
Greg Turnquist
0fdd885224 DATAJDBC-164 - Polishing. 2018-01-26 09:49:51 -06:00
Jens Schauder
bc209b1114 DATAJDBC-164 - Add support for basic @Query annotation. 2018-01-26 09:48:43 -06:00
Jens Schauder
2163a26917 DATAJDBC-157 - Replace dots in MyBatis statement ids with dashes. 2018-01-26 09:32:43 -06:00
Mark Paluch
06b15da50d DATAJDBC-163 - Update copyright years to 2018. 2018-01-09 08:49:39 +01:00
Jens Schauder
fe00e928a5 DATAJDBC-162 - Prevent NPE for missing PropertyPath in DbActionExecutionException. 2018-01-08 10:59:01 +01:00
Michael Simons
235abe44e8 Fix typo (#28)
Thanks
2017-12-14 15:57:41 +01:00
Jens Schauder
ae4e2a7deb DATAJDBC-158 - BasicJdbcPersistentEntityInformation honors Persistable implementations. 2017-12-04 09:27:34 -06:00
Greg Turnquist
b044a13af1 DATAJDBC-151 - Reform Spring Data JDBC to stop autoconfiguration
In the past, Spring Data JDBC performed autoconfiguration such as gleaning whether or not MyBatis is on the classpath, and also whether or not certain other beans exist. This commit removes such flexible settings and instead wires up a JdbcMappingContext seeking an optional NamingStrategy and optional ConversionCustomizer. The other required beans will alert the end user if they don't exist.

All relevant test cases are updated to inject the proper components.

All autoconfiguration is being moved outside Spring Data JDBC, to eventually join Spring Boot after being shook out as an independent module.
2017-11-28 15:20:21 +01:00