전체 글242 [Dart] 기본문법 Classes Class 선언 기본 class Player { String name = 'nico'; final int xp = 1500; sayHello() { // this.name 등 this는 사용가능하지만 클래스 내에서는 사용이 권고되지 않고 있음 print('Hello, my name is $name'); } } void main() { var player = Player(); print(player.name); player.name = 'change'; print(player.name); player.sayHello(); } Constructor 생성자 파라미터를 어느 변수에 넣을 것인지 명시하여 Class의 late prefix를 없애고 생성자 코드수도 줄여 가독성을 높인다. // 일반적인 생성자 cla.. 2023. 1. 11. [Dart] 기본문법 Functions 함수 기본 선언 방식 // 일반적인 함수 선언 String sayHello(String name) { return "Hello, $name nice to meet you!"; } // 바로 리턴할 경우 람다식으로 축약 가능 fat arrow syntax String sayHello2(String name) => "Hello, $name nice to meet you!"; // 수식 함수에 fat arrow syntax 적용 num plus(num a, num b) => a + b; void main() { print(sayHello2('nico')); print(plus(2,3)); } Named Parameters named argument로 파라미터에 이름을 지정({}로 감싸고 오브젝트를 넘기듯이 함.. 2023. 1. 10. [Dart] 기본문법 Data types 기본 타입 타입은 모두 class로 되어 있고 class는 object로 되어 있는 강력한 객체 지향적 언어 void main() { String name = "name"; bool alive = true; int age = 12; double money = 69.99; num x = 12; // int or double or ... x = 1.1;// 가능 } List [] 안에 데이터를 넣어 선언하고 var혹은 타입을 명시할 수 있다. collection if와 collection for를 지원. void main() { // list 선언 var numbers = [1,2,3,4]; List numbers2 = [1,2,3,4]; numbers.add(1);// var 이므로 추가 가능 // col.. 2023. 1. 10. [Dart] 기본 문법 Variables 온라인 편집기 주소 : https://dartpad.dev DartPad dartpad.dev 기본 형태 void main() { print('hello world'); } Dynamic type : 타입이 정해지지 않은 변수 선언 및 사용 void main() { var name;// or dynamic name; 으로 선언도 가능 name = 'string'; name = 12; name = true; if(name is String) { // 문자열일 때 } else if(name is int) { // int형 숫자일 때 처리 등 } } null safety : 변수 등에 null의 허용에 대한 식별자를 기재하여 사전에 npe를 차단 // null safety 하지 않은 코드 bool isEmpt.. 2023. 1. 10. method를 찾고 invoke 하는 함수 작업하다 사용하지 않을 것 같아서 코드만 여기에 정리. package com.gsretail.pbu.common.util; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import com.gsretail.pbu.common.exception.BusinessException; import com.gsretail.pbu.common.status.ErrorEnum; public class MethodUtils { /** * obj의 name 메소드를 찾아 .. 2023. 1. 5. Java8 Bigdecimal 지수 표현 제거 8.124E-7 이 있을 때, Double로 파싱 > new Bigdecimal() 생성 안됨 기타 다른 서칭 답안들 안됨 Bigdecimal.toPlainString() 됨 eg) Bigdecimal b = 8.124E-7; b.toPlainString() 2022. 11. 28. [JPA] JPA batch insert가 다건을 한 번에 지정해도 row마다 insert가 발생하는 건 해결방안 A db에서 데이터를 가져와 B db에 넣는 배치 작업을 수행할 때 두가지 문제 발생 문제1. insert 하기 전에 select가 실행됨 문제2. repository.saveAll(List) 을 통해 다량의 데이터를 넣는데, 멀티 insert가 되지 않고 행별로 insert가 됨 (십만 개를 넣으면 10만번 select, insert 가 수행되는 상황) select 되는 원인 분석 여러 fk의 조합으로 pk가 되어 있는데, 이 경우 이미 key값이 정해진 것으로 판단하여 insert할 때 update를 해야하는지 확인하는 로직이 존재. 그래서 아래 구문에서 isNew()가 false가 되어 merge가 수행되면서 발생한다. @Transactional @Override public S save(S ent.. 2022. 9. 26. [JPA] intellij에서 Entity column명에 cannot resolve column 이 뜨고 링크가 안될 때 현상 이렇게 링크가 되지 않고 에러 상태로 표기된다. 실제 실행에는 문제가 없으나 신경쓰인다. 해결방법 View > Tool Windows > Persistence 클릭하면 좌측 프로젝트 부분에 Persistence 메뉴가 열린다. 프로젝트 메뉴에 오른쪽 마우스 클릭 후, Assign Data Sources 클릭 entityManagerFactory에 Select data source에 알맞은 database 소스를 선택해준다. 사라진 것을 확인할 수 있다. 링크도 정상적으로 걸린다. 2022. 8. 5. [JPA] @Query annotaion 으로 직접 쿼리 작성 너무 잘되어 있는 포스트가 있어 아래에 전체 링크함. 필요한 케이스는 다 들어가있는 듯. 요약 @Query 어노테이션을 달고 일반 SQL 및 JPQL로 쿼리를 작성할 수 있다. JPQL은 JPA에서 지원하는 객체지향 쿼리 언어이다. 테이블 명 등으로 작성하는 일반 sql과 달리 JPA에서 생성한 Entity 등으로 참조한다. 함수명은 일반 JPA처럼 결정되어 있는 것이 아니라 임의작성가능(길이를 줄일 수 있다!!! 망할 JPA!!!) 기본값은 JPQL로 작성가능하고 일반 SQL로 작성하려면 옵션(nativeQuery = true, default false)을 바꿔야한다. @Query(nativeQuery = true) 예제 select * from user where id='test01' 이 문구를 적용.. 2022. 8. 4. 이전 1 2 3 4 5 6 ··· 27 다음