update bez robienia set'ów (spring rest api)

0

Mam problem z updatem w springu w moim api restowym, otóż chciałbym ulepszyć poniższy kod:

@RequestMapping(path = "/{id}", method = RequestMethod.PUT)
	public void update(
			@RequestBody User user,
			@PathVariable Integer id) throws Exception {

		User u = userDAO.findOne(id);
	
		u.setName(user.getName());
		u.setSurname(user.getSurname());
		userDAO.save(u);

	}

mianowicie nie chciałbym wypisywać wszystkich set'ów tj: setName, setSurname etc.
czy jest sposób na to aby wszystkie dane (które defakto są juz w obiekcie user) przesłane Od razu sie ustawiały

0

1.Korzystasz ze Springa Data czy Hibernate?
2.Możesz ew. skorzystac z JPQL do update :)

0

przede wszystkim, zla praktyka jest aby bezposrednio z kontrollera wywolywac metody servisu. Powinienes sobie rozbic swoja aplikacje.
a) Warstwa kontrolerow. Tutaj przesylane sa w body i zwracane obiekty DTO. Kontrolery zwracaja sie albo do fasady albo do serwisu
a( opcjonalna warstwa fasady, ktora będzie wywolywac rozne serwisy w zaleznosci od potrzeb. Oprocz tego Fasada bedzie konwertowac DTO na Entity i odwrotnie
c) warstwa servisowa, wywolujaca odpowiednie repozytoria, i realizujaca logike biznesowa
d) repository (Jpa repository jesti uzywasz)
e) klasy Entity

Oczywiscie klasy Entity powinny miec swoje odpowiedniki w DTO. Raczej nie powinienes zwracac bezposrednio Entity. a przynajmniej tak mnie uczono.

0

Gdybyś to zautomatyzował, to wtedy możesz łatwo zrobić błąd, który spowoduje, że ktoś sam się zrobi adminem. Ustawi sobie w jsonie isAdmin czy coś takiego. Więc dla bezpieczeństwa - lepiej tak nie robić.

A jeżeli się uprzemy, to jest Reflection, które pozwala pracować na właściwościach w sposób dynamiczny (getClass, setProperty).

0

uzywam spring data

1 użytkowników online, w tym zalogowanych: 0, gości: 1