데이터 바인딩(data binding)은 제공자와 소비자로부터 데이터 소스를 함께 묶어 동기화하는 일반적인 기법이다.
즉, 간단히 말해서 프로그램 측에서 연산을 처리하여 데이터의 변화가 생겨나면 UI나 해당 데이터를 사용하는 다른 요소에서 별도의 데이터 갱신하는 코드를 넣지 않아도 알아서 갱신이 일어나도록 동기화 시키는 것이라고 볼 수 있다.
예를 들어 안드로이드에서 데이터 바인딩을 하는 모습을 봐보자
TextView textView = findViewById(R.id.sample_text);
textView.setText("올라프");
<TextView
android:text="@{viewmodel.userName}" />
위 두 모습을 보면 안드로이드에서 기존의 프로그래밍방법을 사용하면 textView 객체를 가져와서 setText()를 사용하여 text값을 변환 시켜주지만 DataBinding을 이용한 것을 보면 xml파일에서 변수값을 직접 할당하는 모습을 볼 수 있다.
이렇게 DataBinding을 하면 편리하게 변수값을 할당할 수 있고 변수값이 변화될때마다 객체를 불러와서 데이터를 갱신시켜줄 필요가 없어 매우 편리하다.
위 처럼 코드가 간략화되고 가독성이 높아진다는 장점뿐 아니라 단점도 있다.
클래스파일도 늘어나고 binding과정이 추가되어 빌드속도가 느려진다는 것이다.
때문에 대체로 MVVM이나 MVP아키텍처와 함께 사용해야 제대로 사용한다 말할 수 있는 듯 하다.